Encoding exercise machine control commands in subtitle streams

ABSTRACT

A method for controlling an exercise machine using a video workout program including encoding, remotely from the exercise machine, exercise machine control commands into a subtitle stream of a video to create the video workout program, wherein the exercise machine control commands are encoded at least once per second, decoding, locally to the exercise machine, the subtitle stream of the video to access the exercise machine control commands, displaying, locally to the exercise machine, the video, and controlling, locally to the exercise machine, one or more moveable members of the exercise machine using the exercise machine control commands.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 16/742,762, filed Jan. 14, 2020, which claims the benefit of and priority to U.S. Provisional Patent Application No. 62/804,685, filed Feb. 12, 2019, and also claims the benefit of, and priority to, U.S. Provisional Patent Application No. 62/866,576, filed Jun. 25, 2019. Each of these applications is incorporated herein by reference in its entirety for all that it discloses.

BACKGROUND

Stationary exercise machines have become an increasingly popular way to exercise. To combat the boredom and burnout that is often experienced by users that exercise with these exercise machines, exercise machines are often sold with a number of different pre-programmed workout programs that are saved within the electronics of the exercise machines. For example, these workout programs may include a “fat burn” workout program, a “hills” workout program, a “performance” workout program, and/or other workout programs.

To enable a user to become more immersed in a workout performed on an exercise machine, some exercise machines are capable of executing video workout programs. A video workout program generally includes a video as well corresponding control commands. The video generally depicts a trainer performing a workout. The corresponding control commands, when executed during the display of the video, generally control an exercise machine to mimic the workout that is depicted in the video as being performed by the trainer. For example, where a trainer is running at 6 miles per hour in a video of a video workout program, the corresponding control commands of the video workout program may control a running belt of a treadmill to likewise operate at 6 miles per hour.

One problem faced by users attempting to perform a video workout program on an exercise machine is that it can be difficult to maintain synchronization between the video and the corresponding control commands in the video workout program. For example, where the video in a video workout program experiences a delay, the corresponding control commands of the video workout program can become unsynchronized from the video, resulting in an incongruity between what a user sees in the video and what the user experiences on the exercise machine. For example, where the video in a video workout program on a treadmill shows a trainer transitioning from running at 5 miles per hour to 6 miles per hour, if the video buffers or experiences some other delay around the time that the transition is depicted in the video, the corresponding control commands in the video workout program can get ahead of the video, resulting in the running belt of the treadmill speeding up from operating at 5 miles per hour to operating at 6 miles per hour prior to the transition being depicted in the video. This lack of synchronization between a video and corresponding control commands in a video workout program can be unsettling or even dangerous for a user of an exercise machine and can limit the ability of the user to become sufficiently immersed in a workout performed on the exercise machine to effectively combat boredom and burnout.

Another problem faced by users attempting to perform a video workout program on an exercise machine is that the fitness level of the user may be higher or lower than is optimal for the workout being performed in the video. In these situations, the video workout program may allow a user to manually override the control commands in order to allow the user to adjust the video workout program to better match the user's fitness level. Unfortunately, however, requiring adjustments of a video workout program to be made manually by the user can detract from the enjoyment of the user and can result in the user inadvertently operating the exercise machine at a level that is not optimal for the user's fitness level. Further, manual adjustment of a video workout program on an exercise machine can result in a lack of integrity between what a user sees in the video and what the user experiences on the exercise machine. This lack of integrity between the video and the manually-overridden control commands in the video workout program can be unsettling for a user of an exercise machine, and can limit the ability of the user to become sufficiently immersed in a workout performed on the exercise machine to effectively combat boredom and burnout.

The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one example technology area where some embodiments described herein may be practiced.

SUMMARY

In one aspect of the disclosure, a stationary exercise machine may include one or more moveable members configured to be moved by a user, an actuator configured to selectively adjust the speed of, or the amount of resistance on, the one or more moveable members, and one or more processors. The one or more processors may be configured to receive a video workout program, execute the video workout program set to a first difficulty level, receive a second difficulty level, and execute the video workout program reset to the second difficulty level.

It is to be understood that both the foregoing summary and the following detailed description are explanatory and are not restrictive of the invention as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:

FIG. 1 illustrates a flowchart of an example exercise system for controlling an exercise machine using a video workout program;

FIG. 2 illustrates a block diagram of an example exercise machine that may be controlled using a video workout program;

FIGS. 3A-3D illustrate video frames and charts that may be employed in controlling an exercise machine using exercise machine control commands of a video workout program that are encoded into a subtitle stream of a video of the video workout program;

FIG. 4A illustrates a chart of a heart rate zones for a user based on the user's resting heart rate and max heart rate;

FIG. 4B illustrates a chart of programmed heart rate zones for a video workout program;

FIGS. 5A-5D illustrate video frames and charts that may be employed in dynamically scaling a video workout program on an exercise machine based on heart rate monitoring;

FIGS. 6A-6B illustrate a flowchart of an example method for controlling an exercise machine using a video workout program; and

FIG. 7 illustrates an example computer system that may be employed in controlling an exercise machine using a video workout program.

Throughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements.

DETAILED DESCRIPTION

While conventional stationary exercise machines generally include multiple conventional workout programs that are saved within the electronics of the exercise machines, these conventional workout programs are generally not effective at enabling a user to become immersed in workouts performed on the exercise machines. Therefore, some exercise machines are capable of being updated with video workout programs that include a video of a trainer performing a workout, in addition to corresponding control commands that control the exercise machine to mimic the workout performed by the trainer in the video. For example, where a trainer is running at 6 miles per hour in the video (either along a real-world path, or on a treadmill), the corresponding control commands may control a running belt of a treadmill to likewise operate at 6 miles per hour.

Unfortunately, however, it can be difficult to maintain synchronization between the video and the corresponding control commands in a video workout program. For example, where the video of a video workout program experiences a delay due to network limitations, memory limitations, or processing limitations, the corresponding control commands can become unsynchronized from the video, resulting in an incongruity between what a user sees in the video and what the user experiences on the exercise machine. For example, where the video in a video workout program on a treadmill shows a trainer transitioning from running at 10 miles per hour to 4 miles per hour, if the video buffers for a few seconds (due to network limitations, memory limitations, or processing limitations) around the time of the transition in the video, the corresponding control commands can get ahead of the video, resulting in the running belt of the treadmill slowing down from operating at 10 miles per hour to operating at 4 miles per hour prematurely. In this example, this lack of synchronization between the video and the corresponding control commands can be unsettling or even dangerous for a user of the treadmill because the running belt can slow down prior to the user expecting the running belt to slow down, which can limit the ability of the user to become sufficiently immersed in a workout performed on the treadmill to effectively combat boredom and burnout.

Further, the difficulty of maintaining synchronization between the video and the corresponding control commands in a video workout program can be exacerbated where the video is live and depicts a live event. For example, where a video in a video workout program depicts a live marathon, a user may be able to perform a workout on their treadmill in their home that mimics the live marathon, at the same time that the live marathon is occurring at a remote location, which may allow the user to become immersed in the workout performed on the treadmill because the user may feel like they are participating in the live marathon. However, network limitations, memory limitations, or processing limitations may prevent the video of the video workout program from keeping up, or cause the video to jump ahead, with respect to the actual live marathon, which may result in the control commands getting ahead of, or getting behind from, the video. This lack of synchronization between the video and the corresponding control commands can be unsettling or even dangerous for the user of the treadmill because the running belt can speed up or slow down before or after the user expects the running belt to speed up or slow down, which can limit the ability of the user to become sufficiently immersed in the workout performed on the treadmill by preventing the user from feeling like they are participating in the live marathon.

Also, in some situations, the fitness level of a user may be higher or lower than is optimal for a workout being performed in a video of a video workout program. In these situations, the video workout program may allow a user to manually override the control commands in order to allow the user to adjust the video workout program to better match the user's fitness level. Continuing with a previous example, where a trainer is running at 6 miles per hour in the video, but the user's fitness level is high enough that running at 6 miles per hour is too easy for the user, the user may manually override the control commands to control the running belt of the treadmill to operate at 10 miles per hour. Alternatively, where the user's fitness level is low enough that running at 6 miles per hour is too difficult for the user, the user may manually override the control commands to control the running belt of the treadmill to operate at 2 miles per hour. Unfortunately, however, requiring adjustments of a video workout program to be made manually by the user can detract from the enjoyment of the user and can result in the user inadvertently operating the exercise machine at a level that is not optimal for the user's fitness level.

Further, manual adjustment of a video workout program on an exercise machine can result in a lack of integrity between what a user sees in the video and what the user experiences on the exercise machine. Continuing with the previous example, where the video on the treadmill shows a trainer running at 6 miles per hour, but the user has manually overridden the control commands to control the running belt of the treadmill to operate at 2 miles per hour, the video may depict the trainer running while the user is only walking at a pace that is dramatically slower than the trainer. Alternatively, where the video on the treadmill shows a trainer running at 6 miles per hour, but the user has manually overridden the control commands to control the running belt of the treadmill to operate at 10 miles per hour, the video may depict the trainer running while the user is sprinting at a pace that is dramatically faster than the trainer. This lack of integrity between a video and manually overridden control commands in a video workout program can be unsettling for a user of an exercise machine and can limit the ability of the user to become sufficiently immersed in a workout performed on the exercise machine to effectively combat boredom and burnout.

Some embodiments disclosed herein may include methods for controlling an exercise machine using a video workout program. For example, a method may include capturing, remotely from an exercise machine, video, of a video workout program, depicting performance of a workout. Then, the method may include encoding, remotely from the exercise machine, exercise machine control commands, of the video workout program, into a subtitle stream (also known as a closed caption stream) of the video. Where the video workout program depicts a live workout, the encoding may occur synchronously with the capturing of the video. Alternatively, where the video workout program depicts a pre-recorded workout, the encoding may occur subsequent to the capturing of the video. Then, the video workout program may be sent to the exercise machine and the method may include various actions performed locally to the exercise machine, such as decoding the subtitle stream of the video to access the exercise machine control commands, and displaying the video simultaneously with controlling one or more moveable members of the exercise machine using the exercise machine control commands.

Due to the fact that, in a video, frames from the video are timed with (e.g., linked or tied to) frames of the subtitle stream, the encoding of control commands in a subtitle stream of a video may maintain synchronization of the video and of corresponding control commands. This synchronization between a video and corresponding control commands can enable a user to become sufficiently immersed in a workout performed on the exercise machine to avoid the boredom and burnout that is often experienced by users of exercise machines.

Also, in another example of methods for controlling an exercise machine using a video workout program, a method may include executing a video workout program at an exercise machine, continuously monitoring an actual heart rate of a user, and periodically determining at least that an actual heart rate zone of the user is not equal to a current programmed heart rate zone of the video workout program. The method may also include periodically determining that the actual heart rate of the user is not trending toward the current programmed heart rate zone by at least a threshold heart rate trend rate. In response, the method may further include adaptively scaling the video workout program by adjusting the current difficulty level upward if the actual heart rate zone is lower than the current programmed heart rate zone, or downward if the actual heart rate zone is higher than the current programmed heart rate zone.

By monitoring not only the user's current heart rate but also the direction and speed at which the user's heart rate is trending (e.g., the slope of the user's heart rate), some embodiments may avoid changing the current difficulty level too often. Further, in some embodiments, the changes to the current difficulty level can be limited to avoid being changed too dramatically in order to avoid the current difficulty level experienced by the user from being dramatically different from the difficulty level that the user sees in the video. As a result of the current difficulty level not being changed too often and/or too dramatically, the enjoyment of the user may be increased, the inadvertent operation of the exercise machine at a level that is not optimal for the user's fitness level may be avoided, and/or the integrity between the workout of the trainer shown in the video and the actual workout performed by the user can be maintained, thus enabling a user to become sufficiently immersed in the workout performed on the exercise machine to avoid the boredom and burnout that is often experienced by users of exercise machines.

Turning now to the drawings, FIG. 1 illustrates a flowchart of an example exercise system 100 for controlling an exercise machine using a video workout program. The exercise system 100 may include a remote location 102 and a local location 104 connected by a network 118.

In some embodiments, the network 118 may be configured to communicatively couple the any two devices in the exercise system 100 to one another, and/or to other devices. In some embodiments, the network 118 may be any wired or wireless network, or combination of multiple networks, configured to send and receive communications between systems and devices. In some embodiments, the network 118 may include a Personal Area Network (PAN), a Local Area Network (LAN), a Metropolitan Area Network (MAN), a Wide Area Network (WAN), a Storage Area Network (SAN), the Internet, or some combination thereof. In some embodiments, the network 118 may also be coupled to, or may include, portions of a telecommunications network, including telephone lines, for sending data in a variety of different communication protocols, such as a cellular network or a Voice over IP (VoIP) network.

In the remote location 102, the exercise system 100 may include a video camera 106 a or 106 b that may be employed to capture video of a trainer 108 a or 108 b performing a workout, and which includes stabilization capabilities to avoid the captured video from being unduly shaky. For example, the video camera 106 a may be employed by a videographer 110 a to capture video of the trainer 108 a performing a workout in which the trainer 108 a runs a live marathon. Similarly, the video camera 106 b may be employed by a videographer 110 b to capture video of the trainer 108 b performing a workout in which the trainer 108 b rides a bicycle in a live road bicycle race. In either example, the result may be captured video that can be sent to a remote server 112 for further processing. The video may be formatted in any one of multiple video formats, at least some of which being capable of supporting a subtitle stream. Some example formats may include, but are not limited to, MPEG-4, Dynamic Adaptive Streaming over HTTP (MPEG-DASH), and HTTP Live Streaming (HLS).

Next, a producer (not shown) may utilize a computer 114 to input exercise machine control commands for the video into a video workout program, which may be encoded into a subtitle stream of the video, or may be encoded separately from the video. For example, where the video is being produced to be utilized as a live video workout program, the producer may input the exercise machine control commands using the computer 114 synchronously with the videographer 110 a or 110 b using the video camera 106 a or 106 b to capture video of the trainer 108 a or 108 b performing the workout (e.g., during a live event). In this example, the producer may also give corresponding instructions to the trainer, such as through an earpiece worn by the trainer, in order to help the trainer and the producer be in sync following a common script or plan for the workout. Alternatively, where the video is produced to be utilized in a pre-recorded video workout program, the producer may input exercise machine control commands using the computer 114 subsequent to the videographer 110 a or 110 b using the video camera 106 a or 106 b to capture video of the trainer 108 a or 108 b (e.g., minutes, hours, or days after the live event).

In some embodiments, the control commands may be encoded into a subtitle stream of the video, which may be a subtitle stream that is not commonly used. For example, where a first subtitle stream (e.g., subtitle stream 1) is commonly used for English subtitles, and a second subtitle stream (e.g., subtitle stream 2) is commonly used for Spanish subtitles, but a third subtitle stream (e.g., subtitle stream 3) is commonly not used, the third subtitle stream (e.g., subtitle stream 3) may be used for encoding exercise machine control commands. The video workout program, including the captured video and the control commands (which may be encoded in the subtitle stream of the video, or may be encoded separately from the video) may then be transmitted over the network 118 from the remote server 112 in the remote location 102 to a local server 116 in the local location 104.

The video workout program may then be transmitted from the local server 116 to be used in connection with an exercise machine 120 a, 120 b, 120 c, or 120 d. For example, the video workout program may be transmitted from the local server 116 to a console 122 a, 122 b, 122 c, or 122 d of the exercise machine 120 a, 120 b, 120 c, or 120 d, which may include a display, such as a touchscreen display. Alternatively, a separate tablet 124 may function as a console, or may function in connection with a console, of the exercise machine 120 a, 120 b, 120 c, or 120 d, and may also include a display, such as a touchscreen display. The tablet 124 may communicate with the console 122 a, 122 b, 122 c, or 122 d, and/or with the exercise machine 120 a, 120 b, 120 c, or 120 d, via a network connection, such as a Bluetooth connection. In either example, the video and the control commands (which may be encoded in the subtitle stream of the video) may be decoded and/or accessed. Then, the console 122 a, 122 b, 122 c, or 122 d and/or the tablet 124 may display the video from the video workout program (e.g., of the trainer 108 a or 108 b performing the marathon or the road bicycle race at the remote location 102) while simultaneously controlling one or more moveable members of the exercise machine 120 a, 120 b, 120 c, or 120 d using the control commands.

In embodiments where the control commands are encoded in the subtitle stream of the video, due to the fact that, in a video, frames from the video are timed with frames of a subtitle stream, the encoding of control commands in a subtitle stream maintains synchronization of the video and of corresponding control commands. This synchronization in a video workout program between the video and the corresponding control commands can enable a user to become immersed in a workout on the exercise machine 120 a, 120 b, 120 c, or 120 d, which may help the user to avoid the boredom and burnout that is often experienced by users of exercise machines.

Further, during performance of a workout by a user 109 using the video workout program on the exercise machine 120 a, 120 b, 120 c, or 120 d, a heart rate of the user 109 may be monitored by the console 122 a, 122 b, 122 c, or 122 d, and/or the tablet 124. This heart rate monitoring may be accomplished by receiving continuous heart rate measurements wirelessly (such as over Bluetooth or Ant+) from a heart rate monitoring device worn by the user 109, such as a heart rate strap 111 b or a heart rate watch 111 a, or other wearable heart rate monitor. Alternatively, the heart rate monitoring device may be built into another device, such as being built into handlebars or handgrips of the exercise machine 120 a, 120 b, 120 c, or 120 d.

The exercise machine 120 a is illustrated in FIG. 1 as a treadmill. The treadmill 120 a may include multiple different moveable members, including a running belt 126 a and a running deck 126 b, which may include one or more operating parameters that are selectively adjustable within a limited range. During performance of a workout using a video workout program on the treadmill 120 a, the running belt 126 a may rotate and the running deck 126 b may incline. One example of an operating parameter on the treadmill 120 a is a speed of the running belt 126 a. The running belt 126 a may rotate at different speeds within a limited range. An actuator (see FIG. 2), for example a belt motor, may selectively adjust the speed at which the running belt 126 a rotates within the limited range. Another example of an operating parameter on the treadmill 120 a is the inclination of running deck 126 b. The running deck 126 b may be selectively inclinable to different angles within a limited range. An actuator, for example an incline motor, may selectively adjust the incline of the running deck 126 b within the limited range.

The exercise machine 120 b is illustrated in FIG. 1 as an elliptical machine. The elliptical machine 120 b may include multiple different moveable members, including a flywheel 126 c, foot rails or pedals 126 d, and handles 126 e, which include one or more operating parameters that are selectively adjustable within a limited range. During performance of a workout using a video workout program on the elliptical machine 120 b, movement of the foot rails or pedals 126 d and the handles 126 e may cause the flywheel 126 c to rotate. One example of an operating parameter on the elliptical machine 120 b is the amount of resistance applied to the flywheel 126 c. A differing amount of resistance can be applied to the flywheel 126 c to make the movement of the foot rails or pedals 126 d and the handles 126 e more difficult or less difficult. An actuator, such as a brake, may be used to selectively adjust the amount of resistance that is applied to the flywheel 126 c. Another example of an operating parameter on the elliptical machine 120 b is the inclination of foot rails or pedals 126 d. The foot rails or pedals 126 d may be inclinable to different angles within a limited range. An actuator, such as an incline motor, may selectively adjust the incline of the foot rails or pedals 126 d within the limited range. Yet another example of an operating parameter on exercise machine 120 b is the stride length of the foot rails or pedals 126 d and/or the handles 126 e. The stride length of the foot rails or pedals 126 d and/or the handles 126 e may be adjustable to different distances within a limited range. An actuator, for example a stride length motor, may selectively adjust the stride length of the foot rails or pedals 126 d and/or the handles 126 e within the limited range.

The exercise machine 120 c is illustrated in FIG. 1 as an exercise bike. The exercise bike 120 c may include multiple different moveable members, including a flywheel 126 f, pedals 126 g, and a frame 126 h, which include one or more operating parameters that are selectively adjustable within a limited range. During performance of a workout using a video workout program on the exercise bike 120 c, movement of the pedals 126 g may cause the flywheel 126 f to rotate. One example of an operating parameter on the exercise bike 120 c is the amount of resistance applied to the flywheel 126 f. A differing amount of resistance can be applied to the flywheel 126 f to make rotation of the pedals 126 g more difficult or less difficult. An actuator, such as a brake, may be used to selectively adjust the amount of resistance that is applied to the flywheel 126 f within the limited range. Another example of an operating parameter on the exercise bike 120 c is the position of the frame 126 h. The frame 126 h may tilt forward, backward, or from side to side within a limited range. An actuator, such as a tilt motor, may selectively adjust the position of the frame 126 h within the limited range.

The exercise machine 120 d is illustrated in FIG. 1 as a rower machine. The rower machine 120 d may include multiple different moveable members, including a flywheel 126 i, a rowbar 126 j, and a seat 126 k, which include one or more operating parameters that are selectively adjustable within a limited range. During performance of a workout using a video workout program on the rower machine 120 d, movement of the rowbar 126 j may cause the flywheel 126 i to rotate. One example of an operating parameter on the rower machine 120 d is the amount of resistance applied to the flywheel 126 i. A differing amount of resistance can be applied to the flywheel 126 i to make pulling on the rowbar 126 j more difficult or less difficult. An actuator, such as a brake, may be used to selectively adjust the amount of resistance that is applied to the flywheel 126 i within the limited range.

FIG. 2 illustrates a block diagram of an example exercise machine 120 that may be controlled using a video workout program. The exercise machine 120 of FIG. 2 may represent, and may include similar components to, any of the exercise machine 120 a, 120 b, 120 c, or 120 d of FIG. 1, for example.

As disclosed in FIG. 2, the exercise machine 120 may include a processing unit 150, a receiving port 152, an actuator 154, and a moveable member 126. The moveable member 126, which may be similar to any of the moveable members 126 a-126 k of FIG. 1, for example. The processing unit 150 may be communicatively connected to the receiving port 152 and may be included within a console 122, which may be similar to any of the consoles 122 a, 122 b, 122 c, or 122 d of FIG. 1, for example. The processing unit 150 may also be communicatively connected to the actuator 154. In response to control commands executed by the processing unit 150, the actuator 154 may selectively adjust one or more operating parameters of the moveable member 126 within a limited range.

Data, including data in a video workout program, can be received by the exercise machine 120 through the receiving port 152. As stated previously, a video workout program may include video as well as control commands. Control commands may provide control instructions to an exercise machine (such as a treadmill, an elliptical machine, an exercise bike, or a rower machine). Control commands may include, for example, control commands for a belt motor, an incline motor, and other actuators. In addition to actuator control commands, control commands may further include distance control commands, time control commands, and/or heart rate zone control commands. These control commands may provide a series of actuator control commands for execution at specific times or at specific distances. For example, a control command for an actuator to be at a certain level for a specific amount of time or for a specific distance. These control commands may also provide a series of actuator control commands for execution at specific times or at specific distances based on a user's monitored heart rate or heart rate trends over time. For example, a control command for an actuator may dictate a certain heart rate zone for a certain amount of time or distance, and a difficulty level of this control command may be dynamically scaled based on a user's monitored heart rate in order to get or keep the user in the certain heart rate zone for the certain amount of time or distance.

Using a control command, received at the receiving port 152 in a video workout program, such as a control command that is decoded from a subtitle stream of a video of a video workout program for example, the processing unit 150 may control the actuator 154 on the exercise machine 120 in the sequence and at the times or distances specified by the control command. For example, actuator control commands that provide the processing unit 150 with commands for controlling a belt motor, an incline motor, a flywheel brake, stride length motor, or another actuator may be included in the control commands received in a video workout program at the exercise machine 120.

Actuator control commands can be received for different time segments or distance segments of a workout. For example, a ten minute workout may have twenty different control commands that provide the processing unit 150 with a different control command for controlling an actuator every thirty seconds. Alternatively, a ten mile workout may have twenty different control commands that provide a processing unit with a different control command for controlling an actuator every half mile. Workouts may be of any duration or distance and different control commands may be received at any time or distance during the workout. Alternatively, a 5 minute workout may have 300 different control commands that provide the processing unit 150 with a different control command for controlling an actuator once per second.

The control commands received in a video workout program at the exercise machine 120 may be executed by the processing unit 150 in a number of different ways. For example, the control commands may be received and then stored into a read/write memory that is included in the processing unit 150. Alternatively, the control commands may be streamed to the exercise machine 120 in real-time. The control commands may also be received and/or executed from a portable memory device, such as a USB memory stick or an SD card.

Video workout programs may include a plurality of control commands that provide instructions for different types of exercise machines. For example, a video workout program may include a first set of control commands for controlling a belt motor and an incline motor on a treadmill, as well as a second set of control commands for controlling a flywheel brake, an incline motor, and a stride length motor of an elliptical machine. Where the exercise machine 120 is a treadmill, the processing unit 150 of the exercise machine 120 may be configured to recognize and select the first set of control commands that provides instructions for a treadmill, while ignoring the second set of control commands that provides instructions for an elliptical machine. Similarly, where the exercise machine 120 is an elliptical machine, the processing unit 150 of the exercise machine 120 may be configured to recognize and select the second set of control commands that provides instructions for an elliptical machine, while ignoring the first set of control commands that provides instructions for a treadmill.

In addition to recognizing and selecting the compatible set of control commands, the processing unit 150 may also apply a sizing restriction to control commands before the control commands can be executed by the exercise machine 120. As with recognizing the compatible set of control commands, the processing unit 150 may use reference data to determine whether a sizing restriction is necessary and, if so, apply the sizing restriction. Application of a sizing restriction to compatible control commands may be necessary due to the fact that the moveable members 126 on the exercise machine 120 have operating parameters that are adjustable only within a limited range. Thus, even if two exercise machines have the same type of actuator (i.e., both a treadmill and an elliptical machine may have incline motors), sets of control commands for that actuator may not be compatible with both exercise machines.

FIGS. 3A-3D illustrate video frames and charts that may be employed in controlling an exercise machine using exercise machine control commands of a video workout program that are encoded into a subtitle stream of a video of the video workout program. In particular, FIGS. 3A-3D illustrate frames 300 a-300 d of video captured by the videographer 110 a (see FIG. 1) of the trainer 108 a performing a workout, which may include running a marathon along a path 306. Further, FIGS. 3A-3D also illustrate data charts 302 a-302 d which contain certain relevant data parameters gathered during the workout at the same time that the corresponding frame of video is captured, manually or automatically using one or more sensors, for example. Finally, FIGS. 3A-3D also illustrate comma separated values (CSV) encoding charts 304 a-304 d showing how the data parameters from the data charts 302 a-302 d is translated and encoded into control commands.

The frames 300 a-300 d of video captured of the trainer 108 a running the marathon represent frames of video captured in succession, one second apart. It is understood, however, that other intervening frames of video may also be captured, such as 29 intervening frames of video between each of the successive frames 300 a-300 d, resulting in a captured video having 30 frames per second. The reason that only one frame per second are illustrated in the frames 300 a-300 d of video is because the encoding of control commands of a video workout program into a subtitle stream of a video of the video workout program may only occur only once per second in the example encoding disclosed in FIGS. 3A-3D. Other encoding rates are also possible, such as encoding twice per second or four times per second, for example. In some embodiments, the encoding rate may be up to as many times per second as there are frames per second (e.g., where the frame rate is 30 frames per second, the encoding rate may up to 30 times per second).

As disclosed in the frame 300 a of FIG. 3A, the trainer 108 a may be performing a workout by running a marathon along the path 306. As disclosed in the data chart 302 a, at the time that the frame 300 a is captured by a video camera, 605 seconds may have transpired since the start of the workout, the trainer 108 a may be running at a pace of 6 miles per hour up a 0.5% incline, the trainer 108 a may currently be in a heart rate zone 3 with a heart rate of 150 beats per minute, and may be in a workout state of “In Workout” (as opposed to a workout state of “Warmup” or “Cool Down”). As disclosed in the CSV encoding chart 304 a, the data parameters from the data chart 302 a may be encoded into a CSV encoding 305 a in a subtitle stream of a video, which is timed with (e.g., linked or tied to) the frame 300 a, as “605,6,0.5,0,0,0,3,150,1”, which represents 605 seconds since the start of the workout, a speed of 6 miles per hour, a 0.5% incline, resistance being non-applicable (with N/A being represented by a 0), a target revolutions per minute being non-applicable (with N/A being represented by a 0), a target watts being non-applicable (with N/A being represented by a 0), a target heart rate zone of 3, a target heart rate of 150, and a workout state of 1 (which represents a workout state of “In Workout”). In some embodiments, the CSV encoding 305 a may have all values separated by a comma, may have all values be numbers (e.g., numbers between −99999.0 to 99999.0), may not have spaces between values, may encode values in order (e.g., so that the position of each value can be used to interpret the meaning of each value), and may allow for a new value if the new value is appended at the end of the CSV encoding.

As disclosed in the frame 300 b of FIG. 3B, the trainer 108 a may continue performing the workout by running the marathon along the path 306. As disclosed in the data chart 302 b, at the time that the frame 300 b is captured by a video camera, 606 seconds may have transpired since the start of the workout (e.g. one additional second has transpired since the frame 300 a was captured), the trainer 108 a may still be running at a pace of 6 miles per hour up a 0.5% incline, the trainer 108 a may still be in heart rate zone 3 but with an increased heart rate of 152 beats per minute, and may still be in a workout state of “In Workout.” As illustrated in frame 300 b, the trainer 108 a may be approaching a transition 308 in the path 306 where the incline transitions from a relatively gradual 0.5% incline to a relatively steep 4.5% incline. As disclosed in the CSV encoding chart 304 b, the data parameters from the data chart 302 b may be encoded into a CSV encoding 305 b in a subtitle stream of a video, which is timed with frame 300 b, as “606,6,0.5,0,0,0,3,152,1”.

As disclosed in the frame 300 c of FIG. 3C, the trainer 108 a may continue performing the workout by running the marathon along the path 306. As disclosed in the data chart 302 c, at the time that the frame 300 c is captured by a video camera, 607 seconds may have transpired since the start of the workout (e.g. one additional second has transpired since the frame 300 b was captured, and two additional seconds have transpired since the frame 300 a was captured), the trainer 108 a may now have slowed to running at a pace of 5 miles per hour up a 4.5% incline, the trainer 108 a may still be in heart rate zone 3 but with an increased heart rate of 156 beats per minute, and may still be in a workout state of “In Workout.” As illustrated in frame 300 c, the trainer 108 a may have crossed over the transition 308 in the path 306 where the incline transitions from the relatively gradual 0.5% incline to the relatively steep 4.5% incline, which may account for the slower speed and increased heart rate of the trainer 108 a. As disclosed in the CSV encoding chart 304 c, the data parameters from the data chart 302 c may be encoded into a CSV encoding 305 c in a subtitle stream of a video, which is timed with the frame 300 c, as “607,5,4.5,0,0,0,3,156,1”.

As disclosed in the frame 300 d of FIG. 3D, the trainer 108 a may continue performing the workout by running the marathon along the path 306. As disclosed in the data chart 302 d, at the time that the frame 300 d is captured by a video camera, 608 seconds may have transpired since the start of the workout (e.g. one additional second has transpired since the frame 300 c was captured, two additional seconds have transpired since the frame 300 b was captured, and three additional seconds have transpired since the frame 300 a was captured), the trainer 108 a may still be running at a pace of 5 miles per hour up a 4.5% incline, the trainer 108 a may still be in heart rate zone 3 but with an increased heart rate of 160 beats per minute, and may still be in a workout state of “In Workout.” As disclosed in the CSV encoding chart 304 d, the data parameters from the data chart 302 d may be encoded into a CSV encoding 305 d in a subtitle stream of a video, which is timed with the frame 300 d, as “608,5,4.5,0,0,0,3,160,1”.

Due to the fact that, in a video, the frames 300 a-300 d from the video are timed with frames of the subtitle stream, the encoding of control commands in a subtitle stream, such as in the CSV encodings 305 a-305 d illustrated in the CSV encoding charts 304 a-304 d, maintains synchronization of the video of a video workout program and of corresponding control commands of the video workout program. For example, even if the video is buffered or otherwise delayed, the subtitle stream will also be buffered or otherwise delayed by an identical amount, which will maintain synchronization of the video and of corresponding control commands. This synchronization between a video and corresponding control commands in a video workout program can enable a user to become immersed in a workout on the exercise machine, which may help the user to avoid the boredom and burnout that is often experienced by users of exercise machines.

FIG. 4A illustrates a chart 400 of a heart rate zone for a user 109 based on the resting heart rate and max heart rate of the user 109. The difference between the max heart rate and the resting heart rate of the user 109 is known as a heart rate reserve (HRR). Some embodiments may employ heart rate reserved to calculate heart rate zones, rather than using a simple percentage of max heart rate, which may allow for zones to be calculated just on the values that the heart actual capable of beating at. As disclosed in the chart 400, the user 109 may have a measured or estimated resting heart rate of 65 beats per minute (BPM) as well as a measured or estimated max heart rate of 185 BPM. Based on these two data points, five heart rate zones for the user 109 may be calculated. In particular, as illustrated in the chart 400, each heart rate zone may be associated with a particular range of heart rates, such as 96-114 BPM for heart rate Zone 1, or 173-192 BPM for heart rate Zone 5. In some embodiments, prior to performing a video workout program, the resting heart rate as well as the max heart rate of a user may be obtained in order to calculate heart rate Zone 1 to heart rate Zone 5. Due to the fact that the resting heart rate and the max heart rate may vary from user to user, the calculated heart rate Zone 1 to heart rate Zone 5 may also vary from user to user.

In some embodiments, the resting heart rate and max heart rate in the chart 400 may be measured or estimated. For example, even though resting heart rate and max heart rate may be initially estimated for the user 109, the user 109 may be allowed to override the initial estimated values if the user 109 knows their resting heart rate or max heart rate. Further, instructions may be provided to the user 109 regarding how to properly measure or test their resting heart rate and/or max heart rate. For example, the treadmill 120 a of FIG. 1 may be configured to provide a test that can be performed on the treadmill 120 a to accurately test the max heart rate of the user 109. This may be a graded test that gets progressively harder until the user 109 hits their max heart rate. The user 109 may perform the test for as long as they can. When the user 109 ends the test, the treadmill 120 a may automatically save the max heart rate of the user 109, and then recompute the heart rate zones shown in the chart 400 for the user 109. Similarly, anytime the user 109 adjusts their resting heart rate or max heart rates, the heart rate zones of the user 109 may be automatically shifted to reflect those new values. Also, it is noted that a max heart rate for a user 109 may be different for different exercise modalities, such as for difference exercise machines. For example, a max heart rate for the user 109 may be lower on the rower machine 120 d (e.g., because it is not a weight bearing exercise machine) than on the treadmill 120 a (because it is a weight bearing exercise machine). Therefore, for any given user, a difference max heart rate may be used for different exercise modalities.

FIG. 4B illustrates a chart 450 of programmed heart rate zones for a video workout program. As disclosed in the chart 450, the video workout program may include multiple programmed heart rate zones (i.e., zone 2 to zone 5, or Z2 to Z5) corresponding to the depiction of the trainer in the video. In particular, the programmed heart rate zone transitions from zone 2, to zone 4, to zone 5, to zone 4, to zone 2, to zone 3, to zone 2, to zone 4, to zone 2, to zone 4, to zone 5, and to zone 4. Each of the transitions may occur at a particular time during the video workout program, and may correspond to a commensurate change in the heart rate zone of the trainer shown in the video of the video workout program. In order to enable the exercise machine to automatically and adaptively scale the current difficulty level of the video workout program so that the user's heart rate zone tracks closely to the programmed heart rate zones, the user's heart rate may be continually monitored. Further, the trends of the user's heart rate may also be taken into consideration in order to avoid the current difficulty level from being changed too often and/or too dramatically.

FIGS. 5A-5D illustrate video frames and data charts that may be employed in dynamically scaling a video workout program on an exercise machine based on heart rate monitoring. In particular, FIGS. 5A-5D illustrate frames 500 a-500 d of video captured by the videographer 110 a (see FIG. 1) of the trainer 108 a performing a workout, which may include running a marathon along a path 506. Further, FIGS. 5A-5D also illustrate data charts 502 a-502 d which contain certain relevant data parameters. These data parameters may be gathered during the workout at the same time that the corresponding frame of video is captured, or may be gathered at or around the time that the corresponding frame of video is displayed. These data parameters may be gathered manually, by listening to voice commands of the trainer 108 a for example. These data parameters may alternatively be gathered automatically, using one or more sensors for example.

Finally, FIGS. 5A-5D also illustrate widgets 508 a-508 d and 510 a-510 d which may overlay the frames 500 a-500 d, respectively, when dynamic scaling based on heart rate monitoring is active during a workout. In some embodiments, the dynamic scaling can be toggled on and off by a user using, for example, a “Smart HR Training” control. Further, in some embodiments, the chart 400 of FIG. 4A may be displayed when a user selects the header of any of the widgets 508 a-508 d or 510 a-510 d.

The frames 500 a-500 d of a video, which show the trainer 108 a running the marathon, represent frames of video captured over time. It is understood, however, that other intervening frames of video may also be captured between each of the frames 500 a-500 d, resulting in a captured video having additional frames (e.g., with a frame rate of 24, 30, or 60 frames per second).

As disclosed in the frame 500 a of FIG. 5A, the trainer 108 a may be performing a workout by running a marathon along the path 506. As disclosed in the data chart 502 a, at the time that the frame 500 a is captured by the video camera 106 a (see FIG. 1), the trainer 108 a may be performing, and/or may direct that a user perform, the workout at a current programmed heart rate zone of zone 2, which for the user 109 of FIG. 4A corresponds to a personalized current programmed heart rate zone range of 115-134 BPM. As illustrated in the heart rate training widget 508 a and in the data chart 502 a, the previous programmed heart rate zone was zone 4, the time since the workout began is 450 seconds, the time since the most recent zone change is 70 seconds, the time remaining in the current programmed heart rate zone is 50 seconds, and the time remaining in the workout is 1350 seconds. As disclosed in the data chart 502 a, the heart rate monitoring rate is once per second, the threshold heart rate trend rate is −5 seconds, the warmup time threshold is 180 seconds, and the user's last ten actual heart rates (in BPM) are 122, 122, 123, 123, 124, 124, 125, 124, 125, and 125. Also disclosed in the data chart 502 a, the baseline difficulty level is B₀ with a baseline speed of 4 MPH, while the current difficulty level is B₂ with a current speed of 4.3 MPH. Finally, the data chart 502 a also discloses that the user's actual heart rate is 125 BPM, which corresponds to the user's actual heart rate zone of zone 2, and the user's actual heart rate zone range of 115-134 BPM. Some or all of the data in data chart 502 a may be employed to determine that the current difficulty level of the video workout program, of which the frame 500 a is a part, should not be dynamically scaled because the user is already performing in the proper zone (i.e., zone 2).

As disclosed in the frame 500 b and data chart 502 b of FIG. 5B, the trainer 108 a may be performing, and/or may direct that a user perform, the workout at a current programmed heart rate zone of zone 3, which for the user 109 of FIG. 4A corresponds to a personalized current programmed heart rate zone range of 135-153 BPM. As illustrated in the heart rate training widget 508 b and in the data chart 502 b, the previous programmed heart rate zone was zone 2, the time since the workout began is 675 seconds, the time since the most recent zone change is 60 seconds, the time remaining in the current programmed heart rate zone is 60 seconds, and the time remaining in the workout is 1125 seconds. As disclosed in the data chart 502 b, the heart rate monitoring rate is once per second, the threshold heart rate trend rate is +4 seconds, the warmup time threshold is 180 seconds, and the user's last ten actual heart rates (in BPM) are 152, 152, 153, 153, 154, 154, 155, 155, 155, and 155. Also disclosed in the data chart 502 b, the baseline difficulty level is B₀ with a baseline speed of 6 MPH, while the current difficulty level is B₂ with a current speed of 6.7 MPH. Finally, the data chart 502 b also discloses that the user's actual heart rate is 155 BPM, which corresponds to the user's actual heart rate zone of zone 4, and the user's actual heart rate zone range of 154-172 BPM. Some or all of the data in data chart 502 b may be employed to determine that the current difficulty level of the video workout program, of which the frame 500 b is a part, should be dynamically scaled downward to move the user into the proper zone (i.e., from heart rate zone 4 to heart rate zone 3).

As disclosed in the frame 500 c and data chart 502 c of FIG. 5C, the trainer 108 a may be performing, and/or may direct that a user perform, the workout at a current programmed heart rate zone of zone 2, which for the user 109 of FIG. 4A corresponds to a personalized current programmed heart rate zone range of 115-134 BPM. As illustrated in the heart rate training widget 508 c and in the data chart 502 c, the previous programmed heart rate zone was zone 3, the time since the workout began is 810 seconds, the time since the most recent zone change is 50 seconds, the time remaining in the current programmed heart rate zone is 70 seconds, and the time remaining in the workout is 990 seconds. As disclosed in the data chart 502 c, the heart rate monitoring rate is once per second, the threshold heart rate trend rate is −4 seconds, the warmup time threshold is 180 seconds, and the user's last ten actual heart rates (in BPM) are 131, 131, 132, 133, 133, 134, 135, 136, 136, and 137. Also disclosed in the data chart 502 c, the baseline difficulty level is B₀ with a baseline speed of 4 MPH, while the current difficulty level is B₁ with a current speed of 4.2 MPH. Finally, the data chart 502 c also discloses that the user's actual heart rate is 137 BPM, which corresponds to the user's actual heart rate zone of zone 3 and the user's actual heart rate zone range of 135-153 BPM. Some of all of the data in data chart 502 c may be employed to determine that the current difficulty level of the video workout program, of which the frame 500 c is a part, should be dynamically scaled downward to move the user into the proper zone (i.e., from heart rate zone 3 to heart rate zone 2).

As disclosed in the frame 500 d and data chart 502 d of FIG. 4D, the trainer 108 a may be performing, and/or may direct that a user perform, the workout at a current programmed heart rate zone of zone 4, which for the user 109 of FIG. 4A corresponds to a personalized current programmed heart rate zone range of 154-172 BPM. As illustrated in the heart rate training widget 508 d and in the data chart 502 d, the previous programmed heart rate zone was zone 2, the time since the workout began is 1020 seconds, the time since the most recent zone change is 120 seconds, the time remaining in the current programmed heart rate zone is 120 seconds, and the time remaining in the workout is 780 seconds. As disclosed in the data chart 502 d, the heart rate monitoring rate is once per second, the threshold heart rate trend rate is +5 seconds, the warmup time threshold is 180 seconds, and the user's last ten actual heart rates (in BPM) are 148, 147, 148, 149, 149, 149, 150, 150, 150, and 150. Also disclosed in the data chart 502 d, the baseline difficulty level is B₀ with a baseline speed of 8 MPH, and the current difficulty level is also B₀ with a current speed of 8 MPH. Finally, the data chart 502 d also discloses that the user's actual heart rate is 150 BPM, which corresponds to the user's actual heart rate zone of zone 3, and the user's actual heart rate zone range of 135-153 BPM. Some of all of the data in data chart 502 d may be employed to determine that the current difficulty level of the video workout program, of which the frame 500 b is a part, should be dynamically scaled upward to move the user into the proper zone (i.e., from heart rate zone 3 to heart rate zone 4).

During the video workout program in which the heart rate training widget 508 a-508 d are displayed to the user 109, two states are displayed, namely, (1) a programmed state 509 which displays the programmed heart rate zone for the entire video workout program, and (2) a historical state 511 a-511 d which shows the historical heart rate zone (and/or the corresponding heart rate) of the user from the beginning of the video workout program to the current point in time in the video workout program. These two displayed states enable the user to track their actual heart rate performance (using the historical state 511 a-511 d) against the programmed heart rate performance (using the programmed state 509) for the video workout program.

During the video workout program in which the frames 500 a-500 d from the video are displayed to the user 109, the current difficulty level may be dynamically scaled based on the monitored heart rate of the user 109 of FIG. 4A. However, due to the fact that the direction and speed at which the heart rate of the user 109 is trending is also being continually monitored, the video workout program may avoid changing the current difficulty level too often and/or too dramatically. Thus, the enjoyment of the user 109 may be increased, the inadvertent operation of the exercise machine (e.g., the treadmill 120 a of FIG. 1) at a difficulty level that is not optimal for the fitness level of the user 109 may be avoided, and the integrity between the workout of the trainer 108 a shown in the frames 500 a-500 d from the video and the actual workout performed by the user 109 can be maintained, thus increasing the ability of the user 109 to become more immersed in the workout on the exercise machine.

FIGS. 6A-6B illustrates a flowchart of an example method 600 for controlling an exercise machine using a video workout program. The method 600 may be performed, in some embodiments, by one or more applications, devices, or systems, such as by the video cameras 106 a-106 b, the computer 114, the remote server 112, the local server 116, the exercise machines 120 a-120 d, the consoles 122 a-122 d, and/or the tablet 124, or some combination thereof. In these and other embodiments, the method 600 may be performed by one or more processors based on one or more computer-readable instructions stored on one or more non-transitory computer-readable media. The method 600 will now be described in connection with FIGS. 1, 2, 3A-3D, 4A-4B, 5A-5D, and 6.

Prior to the method 600, a user may be subscribed to a subscription service (e.g., an IFIT account) that allows the user to have access to video workout programs. This subscription service may store user profile, as well as history information related to a user's sleep, nutrition, stress levels, exercise, wellness, and activity levels (which may be gathered automatically via sensors, or manually entered by the user). This profile and history information may be accessed to recommend particular video workout programs that will best help a user to achieve fitness goals set by the user or automatically generated for the user. By providing high quality video workout programs, a user may be incentivized to continue subscribing, and a retention rate for subscribers may be positively impacted. Further, some video workout programs created using the method 600 may be accessed by user using a pay-per-view model rather than an ongoing subscription model. For example, a pay-per-view model may be appropriate for rare events or classes, or for one-on-one training sessions between a single trainer and a single user.

Further, prior to the method 600, a pre-roll video of a video workout program may be displayed to a user. For example, prior to the start time of a live or pre-recorded exercise class or sporting event, there may be several minutes (e.g., 10 minutes) of pre-roll video that a user may view while waiting for the class or event to begin. This pre-roll video may include pre-recorded video or live video, or may alternate between the two (e.g., begin with prerecorded video at 10 before the start time and then cutting to live video of a trainer at 5 minutes before the start time). This pre-roll video may include a countdown clock to the start time of the class or event. In some embodiments, this pre-roll video does not include control commands encoded into the subtitle stream due to this encoding beginning at the start time of the class or event. In other embodiments, there may be pre-class or pre-event control commands encoded in the subtitle stream of the pre-roll video, such as control commands to adjust environmental control devices in the room (e.g., to adjust the temperature, lighting, music, etc. of the room).

The method 600 may include, at action 602, capturing video. For example, the video camera 106 a may be employed by the videographer 110 a to capture, at action 602, video of the trainer 108 a performing a workout. In this example, the workout being performed by the trainer 108 a may be running a marathon, and the video may be transmitted from the video camera 106 a to the remote server 112 for further processing.

The method 600 may include, at action 604, encoding exercise machine control commands into a subtitle stream of the video to create a video workout program. For example, the computer 114 may be employed by a producer to encode, at action 604, exercise machine control commands into a subtitle stream of the video (that was sent to the remote server 112) to create a video workout program. These exercise machine control commands may be targeted for a particular type of exercise machine, such as the treadmill 120 a.

In some embodiments, the exercise machine control commands may be encoded as comma separated values (CSVs). For example, the computer 114 may be employed by a producer to encode, at action 604, exercise machine control commands into the CSV encoding 305 a, 305 b, 305 c, or 305 d.

In some embodiments, the exercise machine control commands may be configured to control one or more of a speed of one or more moveable members of the exercise machine, an incline percentage of one or more moveable members of the exercise machine, or a resistance of one or more moveable members of the exercise machine. For example, the CSV encoding 305 a, 305 b, 305 c, or 305 d may include a control command configured to control one or more of the speed (e.g., in the 2^(nd) position of the CSV encoding), the incline percentage (e.g., in the 3^(rd) position of the CSV encoding), or the resistance (e.g., in the 4^(th) position of the CSV encoding) of one or more moveable members 126 a-126 h of the exercise machine 120 a, 120 b, or 120 c.

In some embodiments, the comma separated values may further include workout data associated with a workout depicted in the video. This workout data may include one or more of a target revolutions per minute (RPM) for the workout, a target watts for the workout, a target heart rate zone for the workout, a target heart rate for the workout, a current number of seconds since a start of the workout, and a workout state of the workout. In some embodiments, the workout state may include a warmup state, an in-workout state, or a cooldown state. For example, the CSV encoding 305 a, 305 b, 305 c, or 305 d may include workout data associated with the workout depicted in the video from the video, which in this example is the running of a marathon. This workout data may include one or more of a target RPM for the workout (e.g., in the 5^(th) position of the CSV encoding), a target watts for the workout (e.g., in the 6^(th) position of the CSV encoding), a target heart rate zone for the workout (e.g., in the 7^(th) position of the CSV encoding), a target heart rate for the workout (e.g., in the 8^(th) position of the CSV encoding), a current number of seconds since a start of the workout (e.g., in the 1^(st) position of the CSV encoding), and a workout state of the workout (e.g., in the 9^(th) position of the CSV encoding). In this example, the workout state may be encoded as a 0 for a warmup state, as a 1 for an in-workout state, and as a 2 for a cooldown state.

In some embodiments, changes in the exercise machine control commands may be synchronized with associated changes in a workout depicted in the video. For example, as the trainer 108 a changes from running on a 0.5% incline to running on a 4.5% incline, which change is depicted in frames 300 b and 300 c of the video, the exercise machine control commands that are encoded with the frames 300 b and 300 c may be synchronized to reflect this change, namely, that the incline percentage should change from 0.5% to 4.5% (compare the 3^(rd) position of the CSV encoding 305 b to the 3^(rd) position of the CSV encoding 305 c).

In some embodiments, the encoding, at action 604, of the exercise machine control commands into the subtitle stream of the video, to create a video workout program, may be performed subsequent to the capturing, at action 602, of the video. For example, where the video workout program being produced is intended to be a pre-recorded video workout program that is to be performed by an exercise machine user sometime in the future, the encoding of the subtitle stream at action 604 may be performed by the computer 114 (either automatically or as employed by a producer) subsequent to the capturing of the video at action 602 (e.g., minutes, hours, or days after the capturing of the video).

In some embodiments, the encoding, at action 604, of the exercise machine control commands into the subtitle stream of the video, to create a video workout program, may be performed synchronously with the capturing, at action 602, of the video. For example, where the video workout program being produced is intended to be a live video workout program that is performed in real-time by an exercise machine user simultaneously with a live workout (such as a live exercise machine workout performed during a live event such as a live marathon or a live road bicycle race), the encoding of the subtitle stream at action 604 may be performed by the computer 114 (either automatically or as employed by a producer) synchronously with the capturing of the video at action 602 (e.g., during a live event).

The method 600 may include, at action 606, transmitting the video workout program and, at action 608, receiving the video workout program. For example, the remote server 112 may send, at action 606, and the console 122 a of the exercise machine 120 a may receive, at action 608, the video workout program, such as via the network 118 and the local server 116.

The method 600 may include, at action 610, executing, at an exercise machine, the video workout program. For example, the console 122 a of the treadmill 120 a may execute, at action 602, a video workout program. The video workout program may include a video that includes the frames 500 a-500 d that depict the trainer 108 a performing a workout that includes running a marathon.

The method 600 may include, at action 612, decoding the subtitle stream of the video to access the exercise machine control commands. For example, the console 122 a of the exercise machine 120 a may decode the subtitle stream of the video of a video exercise program to access the exercise machine control commands. In this example, this decoding may include interpreting the values stored in the comma separated values encoding 305 a, 305 b, 305 c, or 305 d (e.g., by the position of each value), such as by decoding the 7^(th) positions of the CSV encodings as a target heart rate zones for the workout and by decoding the 8^(th) positions of the CSV encodings as target heart rates for the workout.

In this example, these exercise machine control commands corresponding to heart rates and heart rate zones may correspond to a depiction of a trainer in the video. For example, the video of the video workout program may include the frames 500 a-500 d that depict the trainer 108 a performing a workout that includes running a marathon. The video workout program may also include the multiple programmed heart rate zones that are illustrated in the chart 450 (e.g., the programmed heart rate zones that transition from zone 2, to zone 4, to zone 5, to zone 4, to zone 2, to zone 3, to zone 2, to zone 4, to zone 2, to zone 4, to zone 5, and to zone 4) and that correspond to the heart rate zones of the trainer 108 a as depicted in the video.

The method 600 may include, at action 612, decoding the subtitle stream of the video to access the exercise machine control commands. For example, the console 122 a of the exercise machine 120 a may decode the subtitle stream of the video to access the exercise machine control commands. In this example, this decoding may include interpreting the values stored in the comma separated values encoding 305 a, 305 b, 305 c, or 305 d (e.g., by the position of each value).

The method 600 may include, at action 614, displaying the video and, at action 616, controlling one or more moveable members of the exercise machine using the exercise machine control commands. In some embodiments, changes in the control of the one or more moveable members of the exercise machine may occur synchronously with associated changes in the workout being displayed in the video. For example, the console 122 a of the exercise machine 120 a may display the video, including the frames 300 a-300 d (which may be interleaved with other frames, since the frames 300 a-300 d are successively one second apart). Simultaneously, the console 122 a of the exercise machine 120 a may control the running belt 126 a and the running deck 126 b of the exercise machine 120 a using the exercise machine control commands. In this example, when the console 122 a receives and decodes the CSV encoding 305 b, simultaneously to displaying the frame 300 b, the console 122 a may control the running belt 126 a to operate at 6 miles per hour based on the control command “6” found in the 2^(nd) position of the CSV encoding 305 b, and may control the running deck 126 b to incline to 0.5% based on the control command “0.5” found in the 3^(rd) position of the CSV encoding 305 b. Similarly, in this example, when the console 122 a receives and decodes the CSV encoding 305 c, simultaneously to displaying the frame 300 c, which shows changes in the workout of the trainer 108 a from running at 6 mph to 5 mph, and from running on an incline of 0.5% to running on an incline of 4.5%, the console 122 a may control the running belt 126 a to change from operating at 6 mph to 5 mph based on the control command “5” found in the 2^(nd) position of the CSV encoding 305 c, and may control the running deck 126 b to change from being inclined at 0.5% to being inclined at 4.5% based on the control command “4.5” found in the 3^(rd) position of the CSV encoding 305 c. In this manner, as the trainer 108 a transitions from running on a 0.5% incline to running on a 4.5% incline in the video, the treadmill 120 a displaying the video as part of a workout can likewise transition its running deck 126 b from a 0.5% incline to a 4.5% incline, thus mimicking the workout by the trainer 108 a depicted in the video for a user on the treadmill 120 a.

In some embodiments, the video may be transmitted, at action 606, from a location remote from the exercise machine and received, at action 608, at a location local to the exercise machine in a live broadcast to enable the executing at action 610, the decoding at action 612, the displaying at action 614, and the controlling at action 616 to occur during the performance of the workout at the location remote from the exercise machine, and to enable performance of a workout on the exercise machine at the location local to the exercise machine that mimics the performance of the workout at the location remote from the exercise machine. For example, where the video workout program being produced is intended to be a live video workout program that is performed by an exercise machine user simultaneously with a live workout (such as a workout performed during a live event, such as the Boston Marathon in Massachusetts), the encoding of the subtitle stream (at action 604) may be performed by the computer 114 as employed by a producer on-site at the remote location 102, such as on-site the Boston Marathon in Massachusetts (e.g., in a production truck parked near the finish line, or in a nearby production studio). Then, the live video workout program may be broadcast live over the network 118 (e.g., over the Internet via a satellite uplink from the production truck or nearby production studio, possibly through Amazon Web Services (AWS), which may require a drone or blimp to get reception in a jungle or on a mountain or in a canyon or when surrounded by large buildings) to a user located at the local location 104, such as to a user's home in California. This may enable the user in his home in California to perform a workout on the treadmill 120 a that mimics the running of the Boston Marathon in Massachusetts, while the Boston Marathon is actually happening in Massachusetts. Further, in addition control commands encoded in the subtitle stream of the video, other information may be encoded in the video or otherwise included with the video, such as TWITTER or FACEBOOK or INSTAGRAM comments, or other types of comments received from users or trainers, such as over the Internet via an app or website. This other information may be encoded and/or included on-site (e.g., in a production truck parked near the finish line or in a nearby production studio).

The method 600 may include, at action 618, continuously controlling one or more moveable members of the exercise machine at a current difficulty level. For example, the console 122 a of the treadmill 120 a may continuously control the running belt 126 a of the treadmill 120 a, and/or the running deck 126 b of the treadmill 120 a, at a current difficulty level. In some embodiments, an initial difficulty level may be adjusted as necessary throughout the workout to help the user 109 maintain their heart rate in the proper heart rate zone, as discussed in connection with actions 630 and 632.

The method 600 may include, at action 620, continuously displaying the video. For example, the console 122 a of the treadmill 120 a may continuously display the video of the video workout program that includes the frames 500 a-500 d.

The method 600 may include, at action 622, continuously monitoring an actual heart rate of a user. In some embodiments, the continuously monitoring of the actual heart rate of the user may include continuously monitoring the actual heart rate of the user at least once per second, or at some other regular or irregular interval, such as twice per second, four times per second, eight times per second, once every two seconds, once every four seconds, or once every eight seconds. In some embodiments, the continuously monitoring of the actual heart rate of the user may include continually verifying that the user is actually using the exercise machine. For example, the console 122 a of the treadmill 120 a may continuously monitor the actual heart rate of the user 109, using the heart rate strap 111 b or the heart rate watch 111 a, once per second. The console 122 a of the treadmill 120 a may also continually verify that the user is actually using the treadmill 120 a by analyzing the motor load of the treadmill 120 a to identify if a user is actually putting a load on the motor, and/or by analyzing sensor data (such as a pressure plate sensor) to identify if a user is actually present, etc. This may prevent dynamic scaling of the video workout program if the user is still wearing the heart rate strap 111 b or the heart rate watch 111 a but has stepped off of the running belt 126 a of the treadmill 120 a, for example. Various other methods (beyond a pressure plate sensor) may be employed to detect that the user has stepped off the running belt 126 a of the treadmill 120 a. For example, a camera may be employed to detect if a user remains running on the running belt 126 a. Also, where a user's heart rate slows even though the speed of the running belt 126 a has not slowed may be an indication that the user has stepped off of the running belt 126 a. Further, other safety measures may be implements for certain users, such as minors or the elderly or user who suffer from morbid obesity, which may be tied to a user's age or self-identified or detected ability level (which may be tied to data stored in the user's online account or profile) such as implementing a governor to cause a maximum speed and/or a maximum resistance level (or maximum workload). For example, a minor may be detected based on a weight being detected on the running belt 126 a (e.g., based on a load on the motor or based on a weight scale) that is less than a threshold amount (e.g., under 100 pounds).

The method 600 may include, at action 624, determining whether the actual heart rate zone of the user is equal to a current programmed heart rate zone. If not (no at action 624), the method 600 may include, at action 626, determining whether the actual heart rate of the user is trending toward the current programmed heart rate zone by at least a threshold heart rate trend rate. If not (no at action 626), the method 600 may include, at action 628, determining whether the actual heart rate zone is higher or lower than the current programmed heart rate zone. If lower (lower at 628), the method 600 may include, at action 630, adaptively scaling the video workout program by adjusting the current difficulty level upward. If higher (higher at 628), the method 600 may include, at action 632, adaptively scaling the video workout program by adjusting the current difficulty level downward. In some embodiments, the actions 624 and 626 may be performed periodically and then, in response, the actions 628 and 630, or the actions 628 and 632, may be performed. In some embodiments, the periodically determining of the actions 624 and 626 may be performed once in each 10 second period of time, or some other regular or irregular time interval, such as once in each 5 second period of time, once in each 2 second period of time, once every second, once each 15 second period of time, or once in each 20 second period of time. In some embodiments, any actual heart rate that is determined to be an outlier may not be used in performance of the periodically determining of the actions 624 and 626.

For example, the console 122 a of the treadmill 120 a may determine, at action 624, that the actual heart rate zone (e.g., zone 4 in the data chart 502 b) of the user 109 is not equal to a current programmed heart rate zone (e.g., zone 3 in the data chart 502 b). Then, the console 122 a of the treadmill 120 a determine, at action 626, that the actual heart rate of the user 109 is not trending toward the current programmed heart rate zone (e.g., zone 3 in the data chart 502 b) by at least a threshold heart rate trend rate (e.g., +4 seconds in the data chart 502 b). Then, the console 122 a of the treadmill 120 a determine, at action 628, that the actual heart rate zone (e.g., zone 4 in the data chart 502 b) is higher than the current programmed heart rate zone (e.g., zone 3 in the data chart 502 b) and may adaptively scale, at action 632, the video workout program by adjusting the current difficulty level (e.g., the current difficulty level of B₂ at 6.7 MPH) downward (e.g., to a new current difficulty level of B₁ at 6.3 MPH).

In another example, the console 122 a of the treadmill 120 a may determine, at action 624, that the actual heart rate zone (e.g., zone 3 in the data chart 502 d) of the user 109 is not equal to a current programmed heart rate zone (e.g., zone 4 in the data chart 502 d). Then, the console 122 a of the treadmill 120 a determine, at action 626, that the actual heart rate of the user 109 is not trending toward the current programmed heart rate zone (e.g., zone 4 in the data chart 502 d) by at least a threshold heart rate trend rate (e.g., +5 seconds in the data chart 502 d). Then, the console 122 a of the treadmill 120 a determine, at action 628, that the actual heart rate zone (e.g., zone 3 in the data chart 502 d) is lower than the current programmed heart rate zone (e.g., zone 4 in the data chart 502 d) and may adaptively scale, at action 630, the video workout program by adjusting the current difficulty level (e.g., the current difficulty level of B₀ at 8.0 MPH) upward (e.g., to a new current difficulty level of B₁ at 8.7 MPH).

In some embodiments, the actions 624 and 626 may further include periodically determining at least that a time elapsed since the video workout program began executing is greater than a warmup-time threshold. For example, the console 122 a of the treadmill 120 a may determine, in connection with the actions 624 and 626, that the time elapsed since the video workout program began executing (e.g., 675 seconds in the data chart 502 b) is greater than a warmup-time threshold (e.g., 180 seconds), in which case the current difficulty level would be adjusted upward or downward because a warmup period has been completed. If the contrary were true, however, the current difficulty level may not be adjusted upward due to a warmup period not having been completed.

In some embodiments, the actions 624 and 626 may further include periodically determining at least that a time elapsed since the video workout program began executing is less than a warmup-time threshold and that the actual heart rate zone is higher than the current programmed heart rate zone. For example, the console 122 a of the treadmill 120 a may determine, in connection with the actions 624 and 626, that the time elapsed since the video workout program began executing (e.g., 60 seconds) is less than a warmup-time threshold (e.g., 180 seconds) and that the actual heart rate zone (e.g., zone 3) is higher than the current programmed heart rate zone (e.g., zone 2), in which case the current difficulty level would be adjusted downward at action 632. This may enable a current difficulty level that is initially too difficult to be adjusted downward, even during a warmup period.

In some embodiments, the actions 624 and 626 may further include periodically determining at least that a time remaining in the current programmed heart rate zone is greater than a time-remaining threshold. For example, the console 122 a of the treadmill 120 a may determine, in connection with the actions 624 and 626, that a time remaining in the current programmed heart rate zone (e.g., 60 seconds in the data chart 502 b) is greater than a time-remaining threshold (e.g., 10 seconds), in which case the current difficulty level would be adjusted upward or downward because there is sufficient time remaining in the current programmed heart rate zone for a change in the current difficulty level to be effective. If the contrary were true, however, the current difficulty level may not be adjusted upward or downward due to insufficient time remaining in the current programmed heart rate zone for a change in the current difficulty level to be effective.

In some embodiments, difficulty levels to which the current difficulty level can be adjusted may include a baseline difficulty level, a finite number of positive difficulty levels that are more difficult than the baseline difficulty level, and a finite number of negative difficulty levels that are less difficult than the baseline difficulty level. In some embodiments, the current difficulty level may be initially set to the baseline difficulty level, or may be initially set based on a history of performance of the user on the exercise machine. For example, the console 122 a of the treadmill 120 a may adjust the current difficulty level (e.g., the speed of the running belt 126 a) between a baseline difficulty level (e.g., B₀=7.0 MPH), six positive difficulty levels (e.g., B₁=7.5 MPH, B₂=8.0 MPH, B₃=8.4 MPH, B₄=9.0 MPH, B₅=9.7 MPH, and B₆=10.5 MPH) that are more difficult than the baseline difficulty level, and six negative difficulty levels (e.g., B⁻¹=6.5 MPH, B⁻²=6.0 MPH, B⁻³=5.6 MPH, B⁻⁴=5.0 MPH, B⁻⁵=4.6 MPH, and B⁻⁶=4.3 MPH) that are less difficult than the baseline difficulty level. In this example, the current difficulty level may be initially set to the baseline difficulty level (e.g., B₀=7.0 MPH), or may be set to a most recent or most common difficulty level of the user in previous workout(s) (e.g., if the user was most recently performing at a B⁻³ level, the current difficulty level may be initially set to B⁻³=5.6 MPH).

Subsequent to the method 600, a post-roll video of a video workout program may be displayed to a user. For example, after the finish time of a live or pre-recorded exercise class or sporting event, there may be several minutes (e.g., 10 minutes) of post-roll video that a user may view after finishing the class or event. This post-roll video may include pre-recorded video or live video, or may alternate between the two (e.g., begin with live video of the trainer at the finish time and then cutting to pre-recorded video at 5 minutes after the finish time). In some embodiments, this post-roll video does not include control commands encoded into the subtitle stream due to this encoding ending at the finish time of the class or event. In other embodiments, there may be post-class or post-event control commands encoded in the subtitle stream of the post-roll video, such as control commands to adjust environmental control devices in the room (e.g., to adjust the temperature, lighting, music, etc. of the room).

Further, subsequent to or during the method 600, an archive copy of a live video workout program may be created. This archive copy may store the exercise machine control commands together with the video, either encoded in the subtitle stream or in some other storage format. In this manner, a live video workout program may become an archived video workout program.

Further, the method 600 may be employed, in some embodiments, to convert older video workout programs with exercise machine control signals stored in another storage format into exercise machine control signals that are encoded into the subtitle stream of the video. This conversion may be performed programmatically or manually (such as on the fly while the video workout program is being broadcast).

In some embodiments, the method 600 may result in controlling an exercise machine using a video workout program. Unlike conventional methods of controlling an exercise machine that lack reliable synchronization between a video and corresponding workout control commands in a video workout program, the method 600 may maintain synchronization of the video and of corresponding control commands in a video workout program due to the fact that, in a video, frames from the video are timed with frames of a subtitle stream. This synchronization in the method 600 between a video and corresponding control commands in a video workout program can enable a user to become immersed in a workout on the exercise machine, which may help the user to avoid the boredom and burnout that is often experienced by users of exercise machines. Further, method 600 may result in the performance of a workout in which the current difficulty level may be dynamically scaled based on the monitored heart rate of the user 109. However, due to the fact that the direction and speed at which the heart rate of the user 109 is trending is also being continually monitored, the method 600 may avoid the video workout program from changing the current difficulty level too often and/or too dramatically. Thus, the method 600 may result in the enjoyment of the user 109 being increased, the inadvertent operation of the exercise machine (e.g., the treadmill 120 a of FIG. 1) at a difficulty level that is not optimal for the fitness level of the user 109 being avoided, and the integrity between the workout of the trainer 108 a shown in the frames 500 a-500 d from the video and the actual workout performed by the user 109 being maintained, thus increasing the ability of the user 109 to become more immersed in the workout on the treadmill 120 a, which may help the user to avoid the boredom and burnout that is often experienced by users of exercise machines.

Although the actions of the method 600 are illustrated in FIGS. 6A and 6B as discrete actions, various actions may be divided into additional actions, combined into fewer actions, reordered, expanded, or eliminated, depending on the desired implementation. For example, in some embodiments, actions 604-616 may be performed without performing the other actions of the method 600. Further, in some embodiments, actions 618-630 or 632 may be performed without performing the other actions of the method 600.

FIG. 7 illustrates an example computer system 700 that may be employed in controlling an exercise machine using a video workout program. In some embodiments, the computer system 700 may be part of any of the systems or devices described in this disclosure. For example, the computer system 700 may be part of any of the video cameras 106 a-106 b, the computer 114, the remote server 112, the local server 116, the exercise machines 120 a-120 d, the consoles 122 a-122 d, or the tablet 124 of FIG. 1.

The computer system 700 may include a processor 702, a memory 704, a file system 706, a communication unit 708, an operating system 710, a user interface 712, and an application 714, which all may be communicatively coupled. In some embodiments, the computer system may be, for example, a desktop computer, a client computer, a server computer, a mobile phone, a laptop computer, a smartphone, a smartwatch, a tablet computer, a portable music player, an exercise machine console, a video camera, or any other computer system.

Generally, the processor 702 may include any suitable special-purpose or general-purpose computer, computing entity, or processing device including various computer hardware or software applications and may be configured to execute instructions stored on any applicable computer-readable storage media. For example, the processor 702 may include a microprocessor, a microcontroller, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a Field-Programmable Gate Array (FPGA), or any other digital or analog circuitry configured to interpret and/or to execute program instructions and/or to process data, or any combination thereof. In some embodiments, the processor 702 may interpret and/or execute program instructions and/or process data stored in the memory 704 and/or the file system 706. In some embodiments, the processor 702 may fetch program instructions from the file system 706 and load the program instructions into the memory 704. After the program instructions are loaded into the memory 704, the processor 702 may execute the program instructions. In some embodiments, the instructions may include the processor 702 performing one or more actions of the method 600 of FIGS. 6A-6B.

The memory 704 and the file system 706 may include computer-readable storage media for carrying or having stored thereon computer-executable instructions or data structures. Such computer-readable storage media may be any available non-transitory media that may be accessed by a general-purpose or special-purpose computer, such as the processor 702. By way of example, and not limitation, such computer-readable storage media may include non-transitory computer-readable storage media including Read-Only Memory (ROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), Compact Disc Read-Only Memory (CD-ROM) or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory devices (e.g., solid state memory devices), or any other storage media which may be used to carry or store desired program code in the form of computer-executable instructions or data structures and which may be accessed by a general-purpose or special-purpose computer. Combinations of the above may also be included within the scope of computer-readable storage media. Computer-executable instructions may include, for example, instructions and data configured to cause the processor 702 to perform a certain operation or group of operations, such as one or more actions of the method 600 of FIGS. 6A-6B. These computer-executable instructions may be included, for example, in the operating system 710, in one or more applications, or in some combination thereof.

The communication unit 708 may include any component, device, system, or combination thereof configured to transmit or receive information over a network, such as the network 118 of FIG. 1. In some embodiments, the communication unit 708 may communicate with other devices at other locations, the same location, or even other components within the same system. For example, the communication unit 708 may include a modem, a network card (wireless or wired), an infrared communication device, a wireless communication device (such as an antenna), and/or chipset (such as a Bluetooth device, an 802.6 device (e.g., Metropolitan Area Network (MAN)), a WiFi device, a WiMax device, a cellular communication device, etc.), and/or the like. The communication unit 708 may permit data to be exchanged with a network and/or any other devices or systems, such as those described in the present disclosure.

The operating system 710 may be configured to manage hardware and software resources of the computer system 700 and configured to provide common services for the computer system 700.

The user interface 712 may include any device configured to allow a user to interface with the computer system 700. For example, the user interface 712 may include a display, such as an LCD, LED, or other display, that is configured to present video, text, application user interfaces, and other data as directed by the processor 702. The user interface 712 may further include a mouse, a track pad, a keyboard, a touchscreen, volume controls, other buttons, a speaker, a microphone, a camera, any peripheral device, or other input or output device. The user interface 712 may receive input from a user and provide the input to the processor 702. Similarly, the user interface 712 may present output to a user.

The application 714 may be one or more computer-readable instructions stored on one or more non-transitory computer-readable media, such as the memory 704 or the file system 706, that, when executed by the processor 702, is configured to perform one or more actions of the method 600 of FIGS. 6A-6B. In some embodiments, the application 714 may be part of the operating system 710 or may be part of an application of the computer system 700, or may be some combination thereof.

INDUSTRIAL APPLICABILITY

Various modifications to the embodiments illustrated in the drawings will now be disclosed.

In general, some example methods disclosed herein may enable live or prerecorded video workout programs to be executed on an exercise machine that mimic workouts performed remotely from the exercise machine. For example, a workout may be performed by a trainer in an exotic remote location anywhere in the world, and a video of the workout being performed can be captured in a video workout program. Then, either subsequent to or synchronously with the capturing of the video, a subtitle stream of the video can be encoded with exercise machine control commands, that mimic the workout being performed in the remote exotic location, to create a video workout program. Then, the video workout program can be transmitted to a local location of an exercise machine, the video of the video workout program can be displayed to a user of the exercise machine, and the control commands of the video workout program can simultaneously be used to control the exercise machine to mimic, for the user on the exercise machine, the workout of the trainer in the exotic remote location depicted in the video. Due to the fact that, in a video, frames from the video are timed with frames of the subtitle stream, the encoding of workout control commands in a subtitle stream maintains synchronization of the video and of corresponding workout control commands in the video workout program. This synchronization between a video and corresponding control commands in the video workout program can enable a user to become immersed in a workout on the exercise machine, which may help the user to avoid the boredom and burnout that is often experienced by users of exercise machines.

Further, in general, some example methods disclosed herein may enable live or prerecorded video workout programs on an exercise machine to be dynamically scaled based on heart rate monitoring. For example, due to the possibility that the fitness level of the user may be higher or lower than is optimal for the workout being performed by the trainer in the video of a video workout program, the actual heart rate of the user may be continuously monitored during the performance of the workout, and the difficulty level of the video workout program may be dynamically scaled during the performance of the workout to help the user maintain proper heart rate zones during the workout. By monitoring not only the user's current heart rate but also the direction and speed at which the user's heart rate is trending, the method may avoid changing the current difficulty level too often. Further, in some embodiments, the changes to the current difficulty level can be limited to avoid being changed too dramatically in order to avoid the current difficulty level experienced by the user from being dramatically different from the difficulty level that the user sees in the video. As a result of the current difficulty level not being changed too often and/or too dramatically, the enjoyment of the user may be increased, the inadvertent operation of the exercise machine at a level that is not optimal for the user's fitness level may be avoided, and the integrity between the workout of the trainer shown in the video and the actual workout performed by the user can be maintained, thus increasing the ability of the user to become more immersed in the workout on the exercise machine. Maintaining the integrity between the workout of the trainer shown in the video and the actual workout performed by the user may result, for example, in a trainer running but a user running at a faster or slower pace, but not walking or not sprinting.

In the exercise system disclosed herein, a video camera may be configured to communicate a video workout program over a network to be executed at, and to control, an exercise machine either directly or through any number of intermediate computer systems. For example, a remote server may be eliminated, and the video workout program may be transmitted over the network, after a video of the video workout program is encoded with exercise machine control commands, directly from a computer. In another example, both the remote server and the computer may be eliminated, and the encoding of the subtitle stream of the video with exercise machine control commands may occur at the video camera, resulting in the creation of a video workout program that is transmitted over the network directly from the video camera. In another example, another device, such as a wearable device worn by a videographer or worn by a trainer, may be used by the videographer or the trainer to encode the subtitle stream of the video to create a video workout program before the video workout program is transmitted over the network, and/or the encoding of the subtitle stream may occur automatically based on data gathered from sensors worn by the trainer, thus eliminating a producer from the production of the live video workout program or the prerecorded video workout program. In this example, the trainer may be a professional athlete (e.g., an NBA player), and the sensor(s) may be worn by the professional athlete during a professional sporting event (e.g., during an NBA playoff game), and the professional athlete's biometric data (e.g., heart rate data) may be encoded to allow a user at home to try to match their biometric data (e.g., heart rate) to the biometric data of the professional athlete. In another example, a local server may be eliminated, and the video workout program may be transmitted directly from the network to a console, or to a tablet where the tablet functions as a console or functions in connection with a console.

Further, in another example, the video workout program may be communicated to two devices, one to display the video, and another to control an exercise machine. In this example, a large television, a virtual reality (VR) or augmented reality (AR) headset, or some other device with a display may be configured to display the video of the video workout program, while another device such as a console may be configured to simultaneously control the exercise machine using the decoded exercise machine control commands from the subtitle stream of the video of the video workout program.

Also, in another example, the video camera may be configured to be operated by the trainer, thus eliminating the videographer.

Further, in another example, the video workout program may be broadcast to a single machine, such as in a one-on-one personalized workout session between a trainer and a user, or may be broadcast to multiple machines simultaneously, and multiple users may perform the pre-recorded video workout program, or the live video workout program, simultaneously. This may be useful in a gym setting where multiple users are in a group class and wish to perform the same workout together as a group. This simultaneous performance of a live video workout program or a pre-recorded video workout program may be performed on machines of the same type (e.g., all treadmills), or on machine of different types (e.g., some users on treadmills and some users on elliptical machines). Where the machines are of different types, the workout may include two sets of control commands that are individually relevant to a single type of machine, or may include a single set of control commands that may be used by both types of machines as relevant to each type of machine.

Also, although only a treadmill, elliptical machine, exercise bike, and rower machine are illustrated in the exercise system disclosed herein, it is understood that other types of exercise machines may be employed in the exercise system. For example, a cable weight machine or cable strength training machine (such as the NordicTrack Fusion CST machine), a stair climbing machine, or any other type of exercise machine may be employed.

Further, although some example heart rate zones disclosed herein are associated with particular ranges of heart rates, it is understood that a heart rate zone may be limited to smaller ranges of heart rates or to a single heart rate. Therefore, the term “zone” as used herein may encompass a single heart rate or a range of heart rates.

In the example frames, data, and CSV encodings disclosed herein, it is understood that the data gathered in the data charts are example data only, and other types of data may be additionally or alternatively gathered during the capturing of the video and/or during the creation of the video workout program. For example, precipitation data, temperature data, smell data, wind data, lighting data, and other types of data may be gathered during the capturing of the video. This data may then be encoded or included along with the exercise machine control commands, such as in the subtitle stream of the video in CSV encodings, to create the video workout program. Then, once decoded from the subtitle stream or otherwise accessed in the video workout program, this data may be employed automatically by an exercise machine to further create an immersive experience for a user of the exercise machine. For example, precipitation data may be employed to operate a mister, temperature data may be employed to operate a thermostat, smell data may be employed to operate a smell simulator, wind data may be employed to operate a fan, and/or lighting data may be employed to operate lighting, all in an effort to mimic, as much as possible, the remote environment of the workout depicted in the video of the video workout program once transmitted to the local location of the exercise machine. Other data may also be employed such as nutrition data that operates a smart food processor or food processor (e.g., a smart blender in connection with a smart refrigerator to make a particular protein shake with particular nutrients). In this manner, the user may further be immersed in the workout depicted in the video, which may help the user to forget any discomfort being experienced during the workout, and combat the boredom and burnout that is often experienced by users of exercise machines.

Further, although the workout depicted in the frames disclosed herein is an outdoor workout, any workout, whether indoors or outdoors, whether live or pre-recorded, and whether using an exercise machine or not using an exercise machine, may be depicted in the videos of the video workout programs disclosed herein. For example, a trainer may employ an exercise machine in a remote location to lead a group class in a studio workout at a local gym (or multiple group classes at multiple local gyms) of users exercising on the same type of exercise machine as the trainer. In this example, the video workout program may be a live video workout program or a pre-recorded video workout program, and the workout may be performed inside a building (e.g., in a workout studio) or outdoors. Further, although the workout depicted in the frames disclosed herein is a workout by a trainer, any person, whether a professional trainer or not, may perform the workout. For example, where two friends want to experience a workout in an exotic location (e.g., hiking Mount Everest), but only one of the friends has the money to make the trip, the second friend can experience the same workout at home on his treadmill as his friend experiences on his trip to the exotic location, using the methods disclosed herein.

Further, although the CSV encodings disclosed herein include nine (9) values, it is understood that CSV encoding may include greater than or less than nine (9) values. Further, values may be added over time as new control commands or other data becomes desirable to send to an exercise machine. Also, although a value of zero (0) is used to designate N/A in the CSV encodings disclosed herein, any other value, or no value at all, may be used instead to designate N/A in a CSV encoding. Further, although CSV encodings are disclosed herein as an example of how control commands and other data may be encoded in a subtitle stream, any other type of encoding, other than a CSV encoding, may be employed instead. For example, instead of values separated by a comma, values separated by some other delimiter may be employed. Further, other encodings that do not employ a delimiter may be employed.

Further, although the subtitle stream encodings disclosed herein are generally employed to encode control commands for exercise machines, it is understood that these subtitles stream encodings may additionally or alternatively be employed to encode control commands for other types of devices, such as televisions, smart appliances, automobile systems, environmental systems etc. For example, where a sporting event such as an NFL football game is broadcast over a television channel (e.g., NBC), the subtitle stream of the video depicting the marathon being broadcast may be encoded with control commands that: cause a couch vibration system to rumble and/or toss a user up when a big tackle occurs, cause a smart popcorn maker to make popcorn to be ready to eat at the end of each quarter or at the beginning of each commercial break, cause a scent device to emit a scent of grass or hotdogs to mimic smells in the NFL stadium depicted in the video, and cause a smart refrigerator pour a spectator a Coca-Cola in response to a user sending an indication of interest in a Coca-Cola commercial in the video back to the television channel (e.g., via a senor noticing interest by the user, such as a camera or biosensor, or via a manual indication by the user, such as a command to a smart speaker, or an indication on a smartphone app or website of the television station). Therefore, the subtitle stream encodings disclosed herein may be employed to control any device, such as to synchronize the automatic functioning of the device with the content depicted in the video.

Also, it is understood that the subtitle stream encodings disclosed herein may be secured to prevent a malicious third party from inserting malicious control commands into the subtitle stream encodings. For example, Amazon Web Services (AWS) may be employed to only accept video workout programs from a particular IP address. In this example, when control commands are embedded in a video of a video workout program, and then the resulting video workout program is sent to AWS from the particular IP address in an encrypted channel (with AWS holding the key to the encrypted channel), this may prevent AWS from accepting a malicious video workout program from another IP address and/or with another encryption scheme.

Further, although a video workout program is described herein as including a video and control commands that may cause an exercise machine to mimic the workout depicted in the video, it is understood that an exercise machine employing any of the methods disclosed herein may be configured to allow a user to seize control of the exercise machine during execution of the video workout program. For example, if the workout depicted in the video of the video workout program is too strenuous for a user, a user may opt to continue watching the video from the video workout program but cease to have the control commands continue to control the exercise machine. Therefore, control of a user's exercise machine by control commands of a video workout program may be overridden, either manually or automatically. In this example, a user may seize control of the exercise machine by selecting any of the standard controls of the exercise machine (e.g., the manual speed control), and may then again allow the video workout program to again control the exercise machine by selecting a “follow workout” control or a “follow trainer” control or a “follow video” control. In a first variation of this example, a video workout program executing on the exercise machine may continue to automatically scale the workout up and down, even though the user has manually modified a control of the workout, where the user has changed a control in the direction the user is supposed to be moving according to the video workout program (e.g., the user increases the speed where the video workout program is on the verge of doing so, or the user decreases the decline where video workout program is on the verge of doing so). In a second variation of this example, a video workout program executing on the exercise machine may continue to automatically scale the workout up and down to follow the workout depicted in the video, but may do so with the current difficulty level reset to the level set by the user. In a third variation of this example, the control by the video workout program executing on the exercise machine may be entirely overridden so that control of the exercise machine transfers entirely to the user, with no automatically scaling of the workout to follow the workout depicted in the video. In this third variation, with the control by the video workout program entirely overridden, the heart rate training widget may be disabled. Further, this third variation may result at any point during a video workout program where current heart rate data for the user becomes unavailable or unreliable for any reason, such as where a user removes their heart rate monitoring device (or never had it on in the first place), where the heart rate monitoring device is detected to be worn by another user or an animal (e.g., by a pet dog) or paired with the wrong exercise machine, or where their heart rate monitoring devices otherwise ceases to function properly for any other reason.

Some example embodiments may thus result in a personalized workout, which caters to the actual physiological response of the user to the workout, with hands-free adjustments to the workout being made on the fly. Further, some example embodiments enable a workout to adapt to current or recent conditions, as various current or recent factors can affect the heart rate of a user, such as current fitness level, recent sleep (or lack thereof), current dehydration or hydration levels, recent caffeine intake, current stress level, current fatigue level, current temperature, or current humidity level, or some combination thereof. For example, while a user's fitness level may not dramatically change day to day, other factors in a user's life can change day to day, and some embodiments may take those changes into account. For example, if a user is stressed, sleep deprived, dehydrated, or fatigued, the heart rate of the user may be faster than normal and the workout for the user may be automatically adjusted to be easier. In contrast, if the user is well rested, hydrated, and feeling fresh, the heart rate of the user may be slower than normal and the workout may be automatically adjusted to push the user harder. This may result in a workout that is not just catered to a user, but that is more specifically catered to the user on the particular day of the workout given the particular condition(s) of the user.

Some example embodiments can be employed with various types of workouts such as running, cycling, rowing, or other exercise machine workouts. Some example embodiments can avoid a user from overtraining by doing heart rate training more intelligently and may naturally force a user to progress as the fitness level of the user gradually increases, thus ensuring that a user increases a training load in a smart and meaningful way.

In some embodiments, the adaptive scaling of a video workout program by adjusting the current difficulty level may include adjusting multiple exercise machine parameters simultaneously. For example, in the case of a treadmill, the adaptive scaling of a video workout program may include simultaneously adjusting the current difficulty level of both a speed of a running belt and an incline percentage of a running deck. By adjusting multiple exercise machine parameters simultaneously in this manner, the integrity of the original workout depicted in the video may be better maintained and a more personalized workout may be performed by the user. For example, where a trainer is dramatically less fit than a user, in a video workout program in which the trainer is walking with a certain heart rate zone, the only way to get the user into that same heart rate zone or higher, while maintaining the integrity of the workout with the user walking rather than running, may be to dramatically increase the incline percentage of the running deck above the incline percentage at which the trainer performed their workout, rather than increasing the speed of the running belt much or at all. In this manner, both the trainer and the user are performing the workout by walking, but the dramatically more fit user is simply doing so at a high incline percentage than the dramatically less fit trainer. This may be due, at least in part, to a much greater loss in workout integrity due to the difference between walking and running versus walking at a lower incline percentage and walking at a higher incline percentage. In other words, while a user may easily notice a loss of workout integrity with the user running while the trainer is walking, the user may not be as likely to notice that their incline percentage is higher than the incline percentage of the trainer. An opposite example may also be implemented in a running video workout program, where the incline percentage of the running deck of the user is adjusted below (perhaps even to a negative incline percentage) the incline percentage at which the trainer performed their workout, rather than decreasing the speed of the running belt much or at all, to compensate for a dramatically les fit user. In this manner, both the trainer and the user are performing the workout by running, but the dramatically less fit user is simply doing so at a lower incline percentage than the dramatically more fit trainer.

In some embodiments, the adaptive scaling of a video workout program may include adjusting the current difficulty level of one or more exercise machine parameters and/or may include adjusting environmental factors that affect the difficulty of a workout. For example, the adjustment of environmental factors may include operation of a mister, adjustment of a thermostat, operation of a smell simulator, operation of a fan, and/or adjustment of lighting. Adjustment of each of these environmental factors may increase or decrease the difficulty of a video machine workout, and may be employed in a video machine workout in cooperation with, or instead of, the adjusting of the current difficulty level of one or more exercise machine parameters. Further, a user may be provided with personalization instructions during a video workout program that may affect the difficulty of the workout, such as instructions to hydrate, instructions to change the thermostat, instructions to operate a fan, or any other personalization or combination of personalizations.

In some embodiments, the adaptive scaling of a video workout program by adjusting the current difficulty level may include adjusting any exercise machine parameter related to difficulty using formulas employed to calculate the varying difficulty levels of a workout. For example, formulas may be employed to compute six difficulty levels that are easier than a baseline difficulty level, and six to twelve difficulty levels that are harder than the baseline difficulty level. Workouts will be scaled the same, regardless of exercise machine parameter limits. If an exercise machine parameter exceeds an exercise machine parameter limit, the exercise machine parameter may be set at a maximal exercise machine parameter limit.

In some embodiments, and in light of the possibility (or likelihood) that a user will perform a video workout program at a difficulty level other than the baseline difficulty level (e.g., different than the difficulty level of the trainer), the trainer depicted in the video of the video workout program may give verbal instructions in the video that are more directional than they are specific. For example, a trainer may explain that the workout will now be “increasing incline” rather than the workout will now be “increasing incline up to 10% incline.” Thus, a trainer may not call out specific speeds, inclines, or resistances, but may call out more general revolutions per minute (RPM), strokes per minute (SPM), or rate of perceived exertion (RPE). A trainer may further make general statements in a video such as “I specifically picked the difficulty of this workout for you” or “I'll take this workout into account for the next workouts in the series” to give the trainer credit in the corresponding video workout program for the changes in the exercise machine control commands. The trainer in the video may also give verbal instructions that convey ideas such as “You can take control to adjust things if needed because you know yourself better than anyone,” “If you need to take it easier today, just make one small adjustment and I'll handle the rest,” “If you want an extra challenge today, make an adjustment and I'll handle the rest,” “If you want to increase intensity, it might be better to increase intensity during the hard part of an interval, not the recovery,” or “If you don't feel comfortable running faster than a certain pace, in the settings, feel free to set your max speed, and I'll make sure I don't take you beyond that.” In some embodiments, a live video workout program may experience some natural lag between being recorded and broadcast and received and executed to control an exercise machine of a user. For example, this natural lag may be a few seconds long. In some embodiments, an artificial lag may also be introduced into a live video workout program. For example, an artificial lag of 10 seconds may be introduced into a live video workout program to allow for unexpected or unwanted video and/or audio to be edited out of the live video stream (e.g., to edit out audible obscenities uttered at a live event, or to edit out portions of a video that show visible obscenities). In either example, although this natural lag and/or artificial lag may cause a delay between the live event or class depicted in the video and the experience by the user, the user may nevertheless be watching the video so close in time to the actual events depicted that the user feels as though they are participating in the live event in real-time.

In some embodiments, the formulas for the various difficulty levels may be as follows, which correspond to a treadmill, an exercise bike, an elliptical machine, and a rower machine.

For a Treadmill (speed B of running belt):

-   -   B⁻¹=if (B>1, B−0.7{circumflex over ( )}(5.1−B)−(0.8*(B/8)),B)     -   B⁻²=if (B>1, B−0.7{circumflex over ( )}(5.1−B)−(0.5*(B/8)), B)     -   B⁻³=if (B>1, B−0.7{circumflex over ( )}(5.1−B), B)     -   B⁻⁴=if (B>1, B−0.7{circumflex over ( )}(6−B), B)     -   B⁻⁵=if (B>1, B−0.7{circumflex over ( )}(7−B), B)     -   B⁻⁶=if (B>1, B−0.7{circumflex over ( )}(9−B), B)     -   B₀=B     -   B₁=if (B>1.4, 0.7{circumflex over ( )}(9−B)+B, B)     -   B₂=if (B>1.4, 0.7{circumflex over ( )}(7−B)+B, B)     -   B₃=if (B>1.4, 0.7{circumflex over ( )}(6−B)+B, B)     -   B₄=if (B>1.4, 0.7{circumflex over ( )}(5−B)+B, B)     -   B₅=if (B>1.4, 0.7{circumflex over ( )}(4.2−B)+B, B)     -   B₆=if (B>1.4, 0.7{circumflex over ( )}(3.5−B)+B, B)     -   B₇=if (B>4, 0.7{circumflex over ( )}(2.6−B)+B, if (B>1.4,         0.7{circumflex over ( )}(3.5−B)+B, B))     -   B₈=if (B>4, 0.7{circumflex over ( )}(1.8−B)+B, if (B>1.4,         0.7{circumflex over ( )}(3.5−B)+B, B))     -   B₉=if (B>4, 0.7{circumflex over ( )}(1.2−B)+B, if (B>1.4,         0.7{circumflex over ( )}(3.5−B)+B, B))     -   B₁₀=if (B>4, 0.7{circumflex over ( )}(0.6−B)+B, if (B>1.4,         0.7{circumflex over ( )}(3.5−B)+B, B))     -   B₁₁=if (B>4, 0.7{circumflex over ( )}(−B)+B, if (B>1.4,         0.7{circumflex over ( )}(3.5−B)+B, B))     -   B₁₂=if (B>4, 15, if (B>1.4, 0.7{circumflex over ( )}(3.5−B)+B,         B)) (note, the speed is set to 15     -   MPH for B₁₂ instead of 12 MPH, to provide for a treadmill that         has a maximum speed of 15 MPH instead of 12 MPH)     -   Example, where baseline speed B₀=7.0 MPH, and equipment maximum         speed is 12 MPH:         -   B⁻⁶=4.3 MPH         -   B⁻⁵=4.6 MPH         -   B⁻⁴=5.0 MPH         -   B⁻³=5.6 MPH         -   B⁻²=6.0 MPH         -   B⁻¹=6.5 MPH         -   B₀=7.0 MPH         -   B₁=7.5 MPH         -   B₂=8 MPH         -   B₃=8.4 MPH         -   B₄=9 MPH         -   B₅=9.7 MPH         -   B₆=10.5 MPH         -   B₇=11.8 MPH         -   B₈=12 MPH (Note, these five last levels are set to the             equipment maximum speed of 12 MPH)         -   B₉=12 MPH         -   B₁₀=12 MPH         -   B₁₁=12 MPH         -   B₁₂=12 MPH

For a Treadmill (incline percentage C of running belt):

-   -   C⁻⁶=if (B<4, (C>0, C−0.65*C, C), C)     -   C⁻⁵=if (B<4, (C>0, C−0.55*C, C), C)     -   C⁻⁴=if (B<4, (C>0, C−0.45*C, C), C)     -   C⁻³=if (B<4, (C>0, C−0.35*C, C), C)     -   C⁻²=if (B<4, (C>0, C−0.25*C, C), C)     -   C⁻¹=if (B<4, (C>0, C−0.15*C, C), C)     -   C₀=C     -   C₁=if (B<4, (C>0, 0.2*(40−C)/40*C+C, C), C)     -   C₂=if (B<4, (C>0, 0.4*(40−C)/40*C+C, C), C)     -   C₃=if (B<4, (C>0, 0.6*(40−C)/40*C+C, C), C)     -   C₄=if (B<4, (C>0, 0.8*(40−C)/40*C+C, C), C)     -   C₅=if (B<4, (C>0, (40−C)/40*C+C, C), C)     -   C₆=if (B<4, (C>0, 1.2*(40−C)/40*C+C, C), C)     -   Example, where baseline incline percentage is C₀=9%, and each         incline percentage is rounded to the nearest 0.5%):         -   C⁻⁶=3%         -   C⁻⁵=4%         -   C⁻⁴=5%         -   C⁻³=6%         -   C⁻²=7%         -   C⁻¹=7.5%         -   C₀=9%         -   C₁=10.5%         -   C₂=12%         -   C₃=13%         -   C₄=14.5%         -   C₅=16%         -   C₆=17.5%

For an Exercise Bike, an Elliptical Machine, or a Rower Machine (resistance R on the pedals, the handles, and/or the rowbar):

-   -   R⁻⁶=if (if (R−6<1, 1, R−6)>24, 24, if (R−6<1, 1, R−6))     -   R⁻⁵=if (if (R−5<1, 1, R−5)>24, 24, if (R−5<1, 1, R−5))     -   R⁻⁴=if (if (R−4<1, 1, R−4)>24, 24, if (R−4<1, 1, R−4))     -   R⁻³=if (if (R−3<1, 1, R−3)>24, 24, if (R−3<1, 1, R−3))     -   R⁻²=if (if (R−2<1, 1, R−2)>24, 24, if (R−2<1, 1, R−2))     -   R⁻¹=if (if (R−1<1, 1, R−1)>24, 24, if (R−1<1, 1, R−1))     -   R₀=R     -   R₁=if (if (R+1<1, 1, R+1)>24, 24, if R+1<1, 1, R+1))     -   R₂=if (if (R+2<1, 1, R+2)>24, 24, if (R+2<1, 1, R+2))     -   R₃=if (if (R+3<1, 1, R+3)>24, 24, if (R+3<1, 1, R+3))     -   R₄=if (if (R+5<1, 1, R+5)>24, 24, if (R+5<1, 1, R+5))     -   R₅=if (if (R+5<1, 1, R+5)>24, 24, if (R+5<1, 1, R+5))     -   R₆=if (if (R+6<1, 1, R+6)>24, 24, if (R+6<1, 1, R+6))     -   Example where baseline resistance on pedals is R₀=9:         -   R⁻⁶=3         -   R⁻⁵=4         -   R⁻⁴=5         -   R⁻³=6         -   R⁻²=7         -   R⁻¹=8         -   R₀=9         -   R₁=10         -   R₂=11         -   R₃=12         -   R₄=13         -   R₅=14         -   R₆=15

In some embodiments, a starting difficulty level, other than the baseline difficulty level, may be determined for a user prior to beginning a video workout program. For example, after a user has completed at least a threshold number or workouts of at least a threshold duration (e.g., 3 workouts of a duration greater than 5 minutes), the data from these workouts, and possibly one or more other earlier workouts, may be analyzed (e.g., the past 7 completed workouts with a duration of more than 5 minutes may be analyzed, which may be around the last two weeks of workouts for some users). Outlier data may be excluded (especially low outliers instead of high outliers, because users don't tent over-exert beyond capability, but do tend to under-exert below capability), and the average data (e.g., average VO₂, average watts, average heart rate, or average heart rate recovery rate, or some combination thereof) of the workouts may be determined, and the closest difficulty level may be used as the starting difficulty level based on this average. In this manner, adjustments in difficulty level toward the beginning of a video workout program may be minimized. In other words, based on user history and behaviors, some embodiments may intelligently decide what level works best for the user, and as time progresses, some embodiments get smarter and learn more about the user. Scaled difficulty levels may be stored and labeled after being calculated for further use. For example, scaled difficulty levels may be stored and labeled based on the average VO₂ of the workout, according to the following formula:

(C ₁ +C ₂ +C ₃ +C ₄ +C ₅ +C ₆ +C ₇)/M/*200/(T ₁ +T ₂ +T ₃ +T ₄ +T ₅ +T ₆ +T ₇)=AVO₂

Where:

M=Mass (kg)

AVO₂=Average Relative VO₂ (ml/kg/sec)

-   -   C=Calorie Burn (kcal)     -   C₁=Calorie burn for most recent workout     -   C₂=Calorie burn for second most recent workout     -   C₃=Calorie burn for third most recent workout Etc.

T=Time/Workout Duration (seconds)

-   -   T₁=Workout duration for most recent workout     -   T₂=Workout duration for second most recent workout     -   T₃=Workout duration for third most recent workout Etc.         In one example, where a user has a mass of 68 kg and has a VO₂         of 0.453 ml/kg/sec, this formula may result in an AVO₂ of         0.453*68=30.8 AVO₂.

In some embodiments, calculating the average VO₂ of a workout may enable computation of the overall level at which the workout is programmed. For example, in the context of treadmill workouts, this may allow for basic differentiation between walking and running workouts as a whole. This may allow the targeting of different fitness levels with associated zones. For example, the Instantaneous VO₂ for every control set may be calculated according to the following formulas, which correspond to a treadmill, exercise bike, elliptical machine, and a rower machine:

For a Treadmill:

-   -   If S<1.8 m/s

(0.1*S)+(1.8*S*G)+0.058333=VO₂(ml/kg/sec)

-   -   Else if S>1.8 m/s

(0.2*S)+(0.9*S*G)+0.058333=VO₂(ml/kg/sec)

Where:

-   -   S=Speed (m/s)     -   G=Percent grade or incline (m/m)

Then, the average VO₂ may be calculated according to the following formula:

Σ(IVO₂ *T)/Σ(T)=AVO₂ (ml/kg/sec)

Where:

-   -   T=Time spent at that pace and grade or incline (sec)     -   VO₂=Instantaneous volume of oxygen consumed (ml/kg/sec)     -   AVO₂=Workout volume of oxygen consumed (ml/kg/sec)

For an Exercise Bike:

VO₂=(10.8*W/84)/60+0.11666667

Where:

-   -   W=Power (watts)     -   VO₂=Instantaneous volume of oxygen consumed (ml/kg/sec)     -   60=division from min to sec     -   0.11666667=VO₂ at rest (added to active VO₂)     -   84=default weight

For an Elliptical Machine:

VO₂=1.15*(10.8*W/84)/60+0.11666667

Where:

-   -   W=Power (watts)     -   VO₂=Instantaneous volume of oxygen consumed (ml/kg/sec)     -   1.15=efficiency correction     -   60=division from min to sec     -   0.11666667=VO₂ at rest (added to active VO₂)     -   84=default weight

For a Rower Machine:

W=(((RR/100)+(1−(RR/100))*0.25)*S*1.75)*5

VO₂=(0.20833*W+6.92)/84

Where:

-   -   W=Power (watts)     -   VO₂=Instantaneous volume of oxygen consumed (ml/kg/sec)     -   1.75 meters (5′ 9″)=default user height     -   84 kg (185 lbs.)=default user weight of

Then, other formulas may be employed to compute different heart rate zone values for a user. This may be done by breaking up instantaneous V02 values into simple categories with a max and min. A heart rate zone may be calculated for every control set. Two different sets of heart rate zone values may be determined by the overall workout VO₂ (AVO₂). For example, first workouts may be divided by Average VO₂ and a zone may be assigned for each control set, according to the formulas below, which correspond to a treadmill, an exercise bike, an elliptical machine, and a rower machine:

For a Treadmill:

-   -   If AVO₂<0.35 ml/kg/sec     -   Compute Zones as such by INSTANTANEOUS VO₂ for each control set:         -   if instantaneous VO₂<0.1, Zone=0/-- (Not in a real zone)         -   0.1≥VO₂<0.2, Zone=1         -   0.2≥VO₂<0.3, Zone=2         -   0.3≥VO₂<0.55, Zone=3         -   0.55≥VO₂<0.65, Zone=4         -   0.65≥VO₂, Zone=5     -   If AVO₂≥0.35 ml/kg/sec     -   Compute Zones as such:         -   if instantaneous VO₂<0.15, Zone=0/-- (Not in a real zone)         -   0.15≥VO₂<0.35, Zone=1         -   0.35≥VO₂<0.6, Zone=2         -   0.6≥VO₂<0.7, Zone=3         -   0.7≥VO₂<0.85, Zone=4         -   0.85≥VO₂, Zone=5

For an Exercise Bike:

-   -   Compute Zones as such by INSTANTANEOUS VO₂ for each control set:         -   if instantaneous V02<0.2, Zone=0/-- (Not in a real zone)         -   0.2≥VO₂<0.35, Zone=1         -   0.35≥VO₂<0.45, Zone=2         -   0.45≥VO₂<0.6, Zone=3         -   0.6≥VO₂<0.7, Zone=4         -   0.7≥VO₂, Zone=5

For an Elliptical Machine:

-   -   Compute Zones as such by INSTANTANEOUS VO₂ for each control set:         -   if instantaneous VO₂<0.2, Zone=0/-- (Not in a real zone)         -   0.2≥VO₂<0.3, Zone=1         -   0.3≥VO₂<0.4, Zone=2         -   0.4≥VO₂<0.5, Zone=3         -   0.5≥VO₂<0.6, Zone=4         -   0.6≥VO₂, Zone=5

For a Rower Machine:

-   -   Compute Zones as such by INSTANTANEOUS VO₂ for each control set:         -   if instantaneous V02<0.2, Zone=0/-- (Not in a real zone)         -   0.2≥VO₂<0.35, Zone=1         -   0.35≥VO₂<0.45, Zone=2         -   0.45≥VO₂<0.6, Zone=3         -   0.6≥VO₂<0.7, Zone=4         -   0.7≥VO₂, Zone=5             In some embodiments, these zone calculations may be used to             estimates initial zones for a user, and then these initial             estimated zones may be reviewed and fined tuned by a fitness             professional. Further, in some embodiments, other zone             calculations may be employed other than the zone             calculations listed above.

Next, a zone may be assigned for cross-training sections as well. For example, workouts that have cross-training may have calorie multiplier metadata for sections of the workouts that have cross training. For these sections, the VO₂ may be computed accordingly. In these situations, the following calculations may be employed:

1. Compute VO₂ for interval with metadata.

2. Multiply that VO₂ by the calorie multiplier (just between the set time codes).

3. Use that to assign a zone.

Next, zone smoothing may be added according to the following formulas:

If Z ₀ =Z ₂ AND D<20 AND |VO2_(z0)−VO2_(z)|<0.1, Z=Z ₀

If Z ₀ =Z ₂ AND D≥20, Z=Z (no change)

If Z ₀ ≠Z ₂ , Z=Z (no change)

If |VO2_(z0)−VO2_(z)|>0.1, Z=Z (no change)

Where:

-   -   Z₀=Previous Zone     -   Z₂=Subsequent Zone     -   D=Zone Duration

Next, corrective zone measures may be added according to the following formulas:

AZ=if (Z ₀ −Z>1,1,0)+Z

-   -   If zone of previous control set is more than one zone greater         than the current calculated zone, add 1 to the zone     -   If not, use calculated zone.     -   Where:         -   AZ=Adjusted Zone         -   Z=Current Zone         -   PZ=Programmed Zone         -   PZ₀=Previous Programmed Zone         -   t=seconds after a programmed zone change             -   t₀=time of zone change             -   t₅=5 seconds after a zone change         -   T=seconds into the workout

In some embodiments, in the context of a video workout program configured to be performed on a treadmill, an exercise bike, an elliptical machine, or a rower machine, the following zone evaluation may be performed to determine if the user is in the correct zone and to determine if a zone change is needed. This may be accomplished according to the following formula:

PZ−AZ=0

-   -   No action

PZ−AZ>0

-   -   Potential to increase difficulty level

PZ−AZ<0

-   -   Potential to decrease difficulty level

Where:

-   -   PZ=Programmed Zone (part of control set)     -   AZ=Actual Zone (based on actual user HR)         Continuing with the example context of a video workout program         configured to be performed on a treadmill, an exercise bike, an         elliptical machine, or a rower machine, there may be at least         two different situations in which difficulty levels would need         to be adjusted for a user. The first situation is when the user         drifts out of the correct zone. The second situation is when the         workout itself changes zones. Each of these two situations will         now be explored.

Turning to the first situation in which the user drifts out of the correct zone, this situation may apply if a user experienced a zone change and made it to the correct zone but later is no longer in the correct zone. If the user never made it to the correct zone, or was only in the correct zone for less than a threshold time period (e.g., 5 seconds or 10 seconds), then the second situation criteria may be applied instead of the first situation criteria. The first situation may occur due to overcorrecting heart rate zones, or due to heart rate drift which is a phenomenon where, even at the same workload, a user's heart rate will steadily rise as they fatigue. In this first situation, the following sets of criteria may be employed, which correspond to a treadmill, an exercise bike, an elliptical machine, and a rower machine:

For a Treadmill:

-   -   Criteria Set 1:         -   If programmed zone lasts >25 sec         -   If user was in the correct zone for >5 sec consecutively         -   If >10 seconds remain in that programmed zone         -   If user is not in the correct zone         -   Then take Action 1: Immediately change level up or down if             they leave the correct zone. (Only allow scale down event in             first 180 seconds of workout, and 180 seconds following a             pause event)     -   Criteria Set 2:         -   If T>180         -   If<10 seconds remain in that programmed zone         -   If user was in the correct zone for >5 sec consecutively         -   If user is not in the correct zone         -   Then take Action 2: Evaluate again after zone changes. (Do             nothing)     -   Criteria Set 3:         -   If T>180         -   If programmed zone lasts <25 sec         -   If user was in the correct zone for >5 sec consecutively         -   If user is not in the correct zone         -   Then take Action 3: Evaluate again after zone changes (Do             nothing)     -   Criteria Set 4:         -   If T>180         -   If user was in the correct zone for <5 sec consecutively         -   If user is not in the correct zone         -   Then take Action 4: Follow protocol for zone change     -   Criteria Set 5:         -   If T>180         -   If user is in the correct zone             -   If between t_(x), t_(x+10), 0<Δ HR<4 BPM             -   If between t_(x+10), t_(x+2), 0<Δ HR<4 BPM         -   User is still in correct zone         -   Then take Action 5: Immediately scale down     -   Criteria Set 6:         -   If T>180         -   If user is in the correct zone             -   If between t_(x), t_(x+10), Δ HR<−4 BPM             -   If between t_(x+10), t_(x+2), Δ HR<−4 BPM             -   User is still in correct zone             -   Then take Action 6: Immediately scale up

For an Exercise Bike or an Elliptical Machine (RPM) or a Rower machine (SPM):

-   -   Criteria Set 1:         -   If programmed zone lasts >25 sec         -   If user was in the correct zone for >5 sec consecutively         -   If >10 seconds remain in that programmed zone         -   If user is no longer in the correct zone         -   If user revolutions per minute (RPM) is no more than 15 RPM             less than programmed RPM/user strokes per minutes (SPM) is             no more than 5 SPM less than programmed SPM         -   Then take Action 1: Immediately change level up or down if             they leave the correct zone (Only allow scale down event in             first 180 seconds of workout, and 180 seconds following a             pause event)     -   Criteria Set 2:         -   If programmed zone lasts >25 sec         -   If user was in the correct zone for >5 sec consecutively         -   If >10 seconds remain in that programmed zone         -   If user is no longer in the correct zone         -   If user RPM is below prescribed RPM by more than 15 RPM/user             SPM is below prescribed SPM by more than 5 SPM         -   Then take Action 1: Send message to increase RPM/SPM and             evaluate again after zone changes (Do nothing)     -   Criteria Set 3:         -   If T>180         -   If<10 seconds remain in that programmed zone         -   If user was in the correct zone for >5 sec consecutively         -   If user is no longer in the correct zone         -   Then take Action 2: Evaluate again after zone changes (Do             nothing)     -   Criteria Set 4:         -   If T>180         -   If programmed zone lasts <25 sec         -   If user was in the correct zone for >5 sec consecutively         -   If user is no longer in the correct zone         -   Then take Action 3: Evaluate again after zone changes (Do             nothing)     -   Criteria Set 5:         -   If T>180         -   If user was in the correct zone for <5 sec consecutively         -   If user is no longer in the correct zone         -   Then take Action 4: Follow protocol for new zone

Turning now to the second situation in which the workout itself changes zones, this situation may apply each time that a video workout program transitions from one zone to another during a workout. In some embodiments, the heart rates of the user during an initial time period after the change to a new zone (e.g., the first five seconds from t₀-t₅, or the first ten seconds from t₀-t₁₀) may be thrown out to allow for the heart rate of the user to react to a corresponding change in difficulty level. Oftentimes a peak heart rate will be seen in the first few seconds (e.g., the first five seconds, or the first 10 seconds) of the recovery period, and therefore it may be advantageous to throw out the first few seconds in order to avoid this peak heart rate from influencing changes in the difficulty level of the workout. Therefore, where the first five or ten seconds are thrown out, and the evaluation period is ten second, no scaling changes may take place for at least fifteen or twenty seconds after a zone change and/or a scale event. In some embodiments, the first fifteen seconds after a scale up event or a zone increase may be thrown out. In some embodiments, a slope of the user's heart rate may be evaluated every 10 seconds, and the appropriateness of scaling of the difficulty level may then be evaluated up to every 20 seconds. In this second situation, the following sets of criteria may be employed, which correspond to a treadmill, an exercise bike, an elliptical machine, and a rower machine:

For a Treadmill:

-   -   Criteria Set 1:         -   If T>180         -   If PZ−PZ₀=1         -   If programmed zone lasts >25 sec         -   If between t_(x), t_(x+10), 0<Δ HR<4 BPM (starting at t₅,             t₁₅)             -   If HR is below target zone             -   If >5 seconds remain in that programmed zone             -   If user is not yet in the correct zone (and wasn't in                 the correct zone for at least 5 sec) (their HR is still                 too low)             -   Then take Action 1: Immediately change level up     -   Criteria Set 2:         -   If PZ−PZ₀=−1         -   If programmed zone lasts >25 sec         -   If between t_(x), t_(x+10), −4<Δ HR<−2 BPM (starting at t₅,             t₁₅)         -   If HR is above target zone         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (and wasn't in the             correct zone for at least 5 sec) (their HR is still too             high)         -   Then take Action 2: Immediately change level down     -   Criteria Set 3:         -   If PZ−PZ₀=−1         -   If programmed zone lasts >25 sec         -   If between t_(x), t_(x+10), −2<Δ HR<0 BPM (starting at t₅,             t₁₅)         -   If HR is above target zone         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (and wasn't in the             correct zone for at least 5 sec) (their HR is still too             high)         -   Then take Action 3: Immediately change two levels down     -   Criteria Set 4:         -   If T>180         -   If PZ−PZ₀>2         -   If programmed zone lasts >25 sec         -   If HR is below target zone         -   If between t_(x), t_(x+10), 0<Δ HR<5 BPM (starting at t₅,             t₁₅)         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (and wasn't in the             correct zone for at least 5 sec) (their HR is still too low)         -   Then take Action 4: Immediately change level up     -   Criteria Set 5:         -   If PZ−PZ₀<−2         -   If programmed zone lasts >25 sec         -   If between t_(x), t_(x+10), −5<Δ HR<−3 BPM (starting at t₅,             t₁₅)         -   If HR is above target zone         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (and wasn't in the             correct zone for at least 5 sec) (their HR is still too             high)         -   Then take Action 5: Immediately change level down     -   Criteria Set 6:         -   If PZ−PZ₀<−2         -   If programmed zone lasts >25 sec         -   If between t_(x), t_(x+10), −3<Δ HR<0 BPM (starting at t₅,             t₁₅)         -   If HR is above target zone         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (and wasn't in the             correct zone for at least 5 sec)(their HR is still too high)         -   Then take Action 6: Immediately change 2 levels down     -   Criteria Set 7:         -   If programmed zone lasts >25 sec         -   If >5 seconds remain in that programmed zone         -   If user is not in the correct zone         -   Then take Action 7: Evaluate again after zone changes (Do             nothing)     -   Criteria Set 8:         -   If T>180         -   If PZ−PZ₀=1         -   If programmed zone lasts >25 sec         -   If Δ HR between t_(x), t_(x+10)≥4 BPM         -   If HR is below target zone         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (their HR is still             too low)         -   Then take Action 8: Keep evaluating the rolling Δ HR to see             if change is necessary (Do nothing)     -   Criteria Set 9:         -   If T>180         -   If PZ−PZ₀=1         -   If programmed zone lasts >25 sec         -   If HR is above target zone         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (their HR is still             too low)         -   Then take Action 9: Immediately scale workout down     -   Criteria Set 10:         -   If T>180         -   If PZ−PZ₀=−1         -   If programmed zone lasts >25 sec         -   If Δ HR between t_(x), t_(x+10)≤−4 BPM         -   If HR is above target zone         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (their HR is still             too high)         -   Then take Action 10: Keep evaluating the rolling Δ HR to see             if change is necessary (Do nothing)     -   Criteria Set 11:         -   If T>180         -   If PZ−PZ₀=−1         -   If programmed zone lasts >25 sec         -   If HR is below target zone         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (their HR is still             too low)         -   Then take Action 11: Immediately scale workout up     -   Criteria Set 12:         -   If T>180         -   If PZ−PZ₀≥2         -   If programmed zone lasts >25 sec         -   If Δ HR between t_(x), t_(x+10)≥5 BPM         -   If HR is below target zone         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (their HR is still             too low)         -   Then take Action 12: Keep evaluating the rolling Δ HR to see             if change is necessary (Do nothing)     -   Criteria Set 13:         -   If T>180         -   If PZ−PZ₀>2         -   If programmed zone lasts >25 sec         -   If HR is above target zone         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (their HR is still             too high)         -   Then take Action 13: Immediately scale workout down     -   Criteria Set 14:         -   If T>180         -   If PZ−PZ₀≤−2         -   If programmed zone lasts >25 sec         -   If Δ HR between t_(x), t_(x+10)≤−5 BPM         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (their HR is still             too high)         -   Then take Action 14: Keep evaluating the rolling Δ HR to see             if change is necessary     -   Criteria Set 15:         -   If T>180         -   If PZ−PZ₀<−2         -   If programmed zone lasts >25 sec         -   If HR is below target zone         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (their HR is still             too low)         -   Then take Action 15: Immediately scale workout up     -   Criteria Set 16:         -   If user is in the correct zone         -   Then take Action 16: Do nothing     -   Criteria Set 17:         -   If T≤180         -   Then take Action 17: Follow logic for scale down event. If             scale up event is triggered, ignore.

For an Exercise Bike or an Elliptical Machine (RPM) or a Rower machine (SPM):

-   -   Criteria Set 1:         -   If T>180         -   If PZ−PZ₀=1         -   If programmed zone lasts >25 sec         -   If between t_(x), t_(x+10), 0<Δ HR<4 BPM (starting at t₅,             t₁₅)         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (and wasn't in the             correct zone for at least 5 sec) (their HR is still too low)         -   If user RPM is no more than 15 RPM less than programmed             RPM/SPM is no more than 4 SPM less than programmed SPM (can             be above)         -   Then take Action 1: Immediately change level up     -   Criteria Set 2:         -   If T>180         -   If PZ−PZ₀=1         -   If programmed zone lasts >25 sec         -   If between t_(x), t_(x+10), 0<Δ HR<4 BPM (starting at t₅,             t₁₅)         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (and wasn't in the             correct zone for at least 5 sec) (their HR is still too low)         -   If user RPM is below prescribed RPM by more than 15 RPM/user             SPM is below prescribed SPM by more than 4 SPM         -   Then take Action 2: Evaluate again after zone changes (Do             nothing)     -   Criteria Set 3:         -   If PZ−PZ₀=−1         -   If programmed zone lasts >25 sec         -   If between t_(x), t_(x+10), −4<Δ HR<0 BPM (starting at t₅,             t₁₅)         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (and wasn't in the             correct zone for at least 5 sec) (their HR is still too             high)         -   Then take Action 3: Immediately change level down     -   Criteria Set 4:         -   If T>180         -   If PZ−PZ₀>2         -   If programmed zone lasts >25 sec         -   If between t_(x), t_(x+10), 0<Δ HR<5 BPM (starting at t₅,             t₁₅)         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (and wasn't in the             correct zone for at least 5 sec) (their HR is still too low)         -   If user RPM is no more than 15 RPM less than programmed             RPM/SPM is no more than 5 SPM less than programmed SPM         -   Then take Action 4: Immediately change level up     -   Criteria Set 5:         -   If T>180         -   If PZ−PZ₀≥2         -   If programmed zone lasts >25 sec         -   If between t_(x), t_(x+10), 0<Δ HR<5 BPM (starting at t₅,             t₁₅)         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (and wasn't in the             correct zone for at least 5 sec) (their HR is still too low)         -   If user RPM is below prescribed RPM by more than 15 RPM/user             SPM is below prescribed SPM by more than 4 SPM         -   Then take Action 5: Evaluate again after zone changes (Do             nothing)     -   Criteria Set 6:         -   If PZ−PZ₀≤−2         -   If programmed zone lasts >25 sec         -   If between t_(x), t_(x+10), −5<Δ HR<0 BPM (starting at t₅,             t₁₅)         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (and wasn't in the             correct zone for at least 5 sec) (their HR is still too             high)         -   Then take Action 6: Immediately change level down     -   Criteria Set 7:         -   If programmed zone lasts <25 sec         -   If >5 seconds remain in that programmed zone         -   If user is not in the correct zone         -   Then take Action 7: Evaluate again after zone changes (Do             nothing)     -   Criteria Set 8:         -   If T>180         -   If PZ−PZ₀=1         -   If programmed zone lasts >25 sec         -   If |Δ HR| between t_(x), t_(x+10)≥4 BPM         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (their HR is still             too low)         -   Then take Action 8: Keep evaluating the rolling Δ HR to see             if change is necessary (Do nothing)     -   Criteria Set 9:         -   If T>180         -   If PZ−PZ₀=−1         -   If programmed zone lasts >25 sec         -   If Δ HR between t_(x), t_(x+10)≤−4 BPM         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (their HR is still             too high)         -   Then take Action 9: Keep evaluating the rolling Δ HR to see             if change is necessary (Do nothing)     -   Criteria Set 10:         -   If T>180         -   If PZ−PZ₀>2         -   If programmed zone lasts >25 sec         -   If Δ HR between t_(x), t_(x+10)≥5 BPM         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (their HR is still             too low)         -   Then take Action 10: Keep evaluating the rolling Δ HR to see             if change is necessary     -   Criteria Set 11:         -   If T>180         -   If PZ−PZ₀≤−2         -   If programmed zone lasts >25 sec         -   If |Δ HR| between t_(x), t_(x+10)≤−5 BPM         -   If >5 seconds remain in that programmed zone         -   If user is not yet in the correct zone (their HR is still             too high)         -   Then take Action 11: Keep evaluating the rolling Δ HR to see             if change is necessary     -   Criteria Set 12:         -   If user is in the correct zone         -   Then take Action 12: Do nothing.     -   Criteria Set 13:         -   If T≤180         -   Take Action 13: Follow logic for scale down event. If scale             up event is triggered, ignore.

In some embodiments, the foregoing criteria may follow various guidelines with regard to starting a new video workout program and/or pausing a video workout program. These guidelines may include the following guidelines:

-   -   1. DO NOT scale up a workout in the first 180 seconds in order         to allow a user's heart rate to increase on its own. Scaling in         the first 180 seconds would likely overshoot the target.     -   2. DO NOT scale up a workout in the 180 seconds following a         pause event in order to account for the likelihood that, when a         user pauses the workout, they are likely going to have their         heart rate drop due to the recovery.     -   3. DO allow scale down events to happen in the first 180 seconds         of the workout in order to account for a warmup that is too         challenging for the user.     -   4. DO allow scale down events to happen in the 180 seconds         following a pause event.     -   5. DO NOT scale up for 60 seconds after a cross training         section. A cross training section may have metadata with a         calorie multiplier for that section.     -   6. DO NOT scale during a cross training section. A cross         training section may have metadata with a calorie multiplier for         that section.     -   7. DO NOT scale up for 60 seconds (for a treadmill) or 30         seconds (for an exercise bike, an elliptical machine, or a rower         machine) after the dynamic scaling based on heart rate         monitoring has been toggled back on by a user (after the smart         scaling had previously been toggled off by a user, in some cases         by the user overriding a setting).     -   8. DO NOT scale when last scale up event <25 seconds ago.     -   9. DO NOT scale when last scale down event <20 seconds ago.     -   10. DO NOT scale when a programmed zone increase <25 seconds         ago.     -   11. DO NOT scale when a programmed zone decrease <20 seconds         ago.     -   12. DO NOT scale if <5 seconds remains in a zone, and user is         and was not in the zone.     -   13. DO NOT scale if<10 seconds remain in a zone, and user was in         the zone (but isn't anymore).     -   14. DO NOT scale if PZ<25 seconds.     -   15. DO NOT scale if user pressed follow workout <60 seconds ago         and HR is below PZ.     -   16. DO NOT scale if cross training ended <60 seconds ago and HR         is below PZ.     -   17. DO NOT scale if workout is a cycling or elliptical workout         and RPM values are invalid.     -   18. DO NOT scale if workout is a rowing workout and SPM values         are invalid.     -   19. DO NOT scale if HR data is invalid.     -   20. DO NOT scale when levels are the same (example: when speed         is at 1 mph, or at +6 to +12 walking speeds).     -   21. DO NOT scale up when equipment limits have been reached and         HR is below the PZ.     -   22. DO NOT scale if a user is at a level that is maxing out the         governor and HR is below PZ.     -   23. DO NOT scale if every data point in the array of last 10         seconds is the same value.     -   24. DO NOT scale if a user has changed controls in the last 60         seconds.     -   25. DO NOT scale when a user hops off of the running belt of a         treadmill and hops onto to the side rails of the treadmill         (e.g., to prevent a runaway treadmill) which may be detected in         a number of ways including, but not limited to:         -   Criteria Set 1:             -   If last zone change was not a zone decrease             -   If no scale down event for the last 30 seconds             -   If Δ HR≤−4 bpm             -   Then perform Actions 1: Do not send any scale up events,                 Pause workout, and         -   Resume workout 2 levels lower         -   Criteria Set 2:             -   If last zone change was a zone decrease             -   If zone decrease was at least 120 seconds ago             -   If no scale down event for 30 seconds             -   If Δ HR≤−4 bpm             -   Then perform Actions 2: Do not send any scale up events,                 Pause workout, and         -   Resume workout at previous level         -   Criteria Set 3:             -   If there was a scale down event within 30 seconds, OR             -   If there was a zone decrease within 120 seconds (and no                 other changes since), OR             -   If HR isn't dropping faster than 4 BPM per 10 seconds             -   Then perform Action 3: Do nothing

In some embodiments, outliers in heart rate data may be excluded in order to avoid dynamic scaling based on heart rate data that is likely invalid. For example, the following steps may be followed to exclude outlier heart rate data:

Step 1: Is the value super wild?

-   -   If HR>250, then exclude     -   If HR<40, then exclude     -   If 40<HR<250, then use as part of data set in step 2     -   Note: Null values are treated like a 0 and are automatically         excluded from the data set.

Step 2: Is the value an outlier based on other data points around it?

-   -   With the remaining values, take the median of the previous 10         seconds (or the array of the 10 seconds of data passed at the         same time)     -   If |HR−M|>20, exclude.

Step 3: If ≤2 values are excluded, they are ignored when it comes to finding the A for scale events, OR if >2 values are excluded, do not trigger any scale event because it can be assumed that the data is bad.

Where:

-   -   HR=Instantaneous HR value     -   M=Median of 10 second data set

In one example that follows these steps for excluding outliers in heart rate data, with the following ten heart rate values: {123,123,146,125,122,122,121,121,121,120} and M=122, the following results may be obtained:

HR₁=120, |120−122|=2, include

HR₂=121, |121−122|=1, include

HR₃=122, |122−122|=0, include

HR₄=123, |123−122|=1, include

HR₅=146, |146−122|=24, exclude

In accordance with common practice, the various features illustrated in the drawings may not be drawn to scale. The illustrations presented in the present disclosure are not meant to be actual views of any particular apparatus (e.g., device, system, etc.) or method, but are merely example representations that are employed to describe various embodiments of the disclosure. Accordingly, the dimensions of the various features may be arbitrarily expanded or reduced for clarity. In addition, some of the drawings may be simplified for clarity. Thus, the drawings may not depict all of the components of a given apparatus (e.g., device) or all operations of a particular method.

Terms used herein and especially in the appended claims (e.g., bodies of the appended claims) are generally intended as “open” terms (e.g., the term “including” should be interpreted as “including, but not limited to,” the term “having” should be interpreted as “having at least,” the term “includes” should be interpreted as “includes, but is not limited to,” etc.).

Additionally, if a specific number of an introduced claim recitation is intended, such an intent will be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases “at least one” and “one or more” to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim recitation to embodiments containing only one such recitation, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an” (e.g., “a” and/or “an” should be interpreted to mean “at least one” or “one or more”); the same holds true for the use of definite articles used to introduce claim recitations.

In addition, even if a specific number of an introduced claim recitation is explicitly recited, it is understood that such recitation should be interpreted to mean at least the recited number (e.g., the bare recitation of “two recitations,” without other modifiers, means at least two recitations, or two or more recitations). Furthermore, in those instances where a convention analogous to “at least one of A, B, and C, etc.” or “one or more of A, B, and C, etc.” is used, in general such a construction is intended to include A alone, B alone, C alone, A and B together, A and C together, B and C together, or A, B, and C together, etc. For example, the use of the term “and/or” is intended to be construed in this manner.

Further, any disjunctive word or phrase presenting two or more alternative terms, whether in the summary, detailed description, claims, or drawings, should be understood to contemplate the possibilities of including one of the terms, either of the terms, or both terms. For example, the phrase “A or B” should be understood to include the possibilities of “A” or “B” or “A and B.”

Additionally, the use of the terms “first,” “second,” “third,” etc., are not necessarily used herein to connote a specific order or number of elements. Generally, the terms “first,” “second,” “third,” etc., are used to distinguish between different elements as generic identifiers. Absence a showing that the terms “first,” “second,” “third,” etc., connote a specific order, these terms should not be understood to connote a specific order. Furthermore, absence a showing that the terms “first,” “second,” “third,” etc., connote a specific number of elements, these terms should not be understood to connote a specific number of elements. For example, a first widget may be described as having a first side and a second widget may be described as having a second side. The use of the term “second side” with respect to the second widget may be to distinguish such side of the second widget from the “first side” of the first widget and not to connote that the second widget has two sides.

The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention as claimed to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described to explain practical applications, to thereby enable others skilled in the art to utilize the invention as claimed and various embodiments with various modifications as may be suited to the particular use contemplated. 

The invention claimed is:
 1. A method for controlling an exercise machine using a video workout program, the method comprising: receiving a subtitle stream of a video that has been encoded remotely from the exercise machine with exercise machine control commands to create the video workout program, wherein the exercise machine control commands are encoded at regular intervals based on a frame rate of the video; decoding, locally to the exercise machine, the subtitle stream of the video to access the exercise machine control commands; displaying, locally to the exercise machine, the video; and controlling, locally to the exercise machine, one or more moveable members of the exercise machine using the exercise machine control commands.
 2. The method of claim 1, wherein the exercise machine control commands are encoded as comma separated values (CSVs).
 3. The method of claim 2, wherein the CSVs further include workout data associated with a workout depicted in the video of the video workout program.
 4. The method of claim 3, wherein the workout data includes one or more of: a target revolutions per minute (RPM) for the workout; a target watts for the workout; a target heart rate zone for the workout; a target heart rate for the workout; a current number of seconds since a start of the workout; and a workout state of the workout, the workout state including a warmup state, an in-workout state, or a cooldown state.
 5. The method of claim 1, wherein: changes in the exercise machine control commands of the video workout program are synchronized with associated changes in the workout depicted in the video of the video workout program; and changes in the control of the one or more moveable members of the exercise machine occur synchronously with associated changes in the workout being displayed in the video.
 6. The method of claim 1, wherein the exercise machine control commands are configured to control one or more of: a speed of the one or more moveable members of the exercise machine; an incline percentage of the one or more moveable members of the exercise machine; or a resistance of the one or more moveable members of the exercise machine.
 7. The method of claim 2, wherein the exercise machine control commands are encoded such that values having different positions correspond to different parameters of the exercise machine.
 8. A method for generating a video workout program for controlling an exercise machine, the method comprising: capturing, at a remote location that is remote from the exercise machine, a video that includes a depiction of a trainer performing a workout; encoding, at the remote location, exercise machine control commands into a subtitle stream of the video to create the video workout program, wherein the exercise machine control commands are encoded such that each second of the video is associated with an exercise control command of the exercise control commands; and transmitting the video workout program to the exercise machine, wherein the exercise machine is configured to decode the subtitle stream of the video to access the exercise machine control commands and execute the video workout program to control one or more moveable members of the exercise machine once per second using the exercise machine control commands and to continuously display the video.
 9. The method of claim 8, wherein the exercise machine control commands are encoded as comma separated values (CSVs).
 10. The method of claim 9, wherein the CSVs further include workout data associated with a workout depicted in the video of the video workout program.
 11. The method of claim 10, wherein the workout data includes one or more of: a target revolutions per minute (RPM) for the workout; a target watts for the workout; a target heart rate zone for the workout; a target heart rate for the workout; a current number of seconds since a start of the workout; and a workout state of the workout, the workout state including a warmup state, an in-workout state, or a cooldown state.
 12. The method of claim 8, wherein: changes in the exercise machine control commands of the video workout program are synchronized with associated changes in the workout depicted in the video of the video workout program; and changes in the control of the one or more moveable members of the exercise machine occur synchronously with associated changes in the workout being displayed in the video.
 13. The method of claim 8, wherein the exercise machine control commands are configured to control one or more of: a speed of the one or more moveable members of the exercise machine; an incline percentage of the one or more moveable members of the exercise machine; or a resistance of the one or more moveable members of the exercise machine.
 14. The method of claim 9, wherein the exercise machine control commands are encoded such that values having different positions correspond to different parameters of the exercise machine.
 15. A non-transitory, computer-readable medium including instructions which, when executed by a processor of an exercise machine, cause the processor to: decode a subtitle stream of a video of a video workout program to access exercise machine control commands; execute, the video workout program to control one or more moveable members of the exercise machine once per second using the exercise machine control commands and to continuously display the video.
 16. The computer-readable medium of claim 15, wherein the exercise machine control commands are encoded once per second.
 17. The computer-readable medium of claim 15, wherein the exercise machine control commands are encoded as comma separated values (CSVs).
 18. The computer-readable medium of claim 17, wherein the exercise machine control commands are encoded such that values having different positions correspond to different parameters of the exercise machine.
 19. The computer-readable medium of claim 15, wherein: changes in the exercise machine control commands of the video workout program are synchronized with associated changes in the workout depicted in the video of the video workout program; and changes in the control of the one or more moveable members of the exercise machine occur synchronously with associated changes in the workout being displayed in the video.
 20. The computer-readable medium of claim 18, wherein the exercise machine parameters include one or more of: a speed of the one or more moveable members of the exercise machine; an incline percentage of the one or more moveable members of the exercise machine; or a resistance of the one or more moveable members of the exercise machine. 